Thứ Tư, 28 Tháng Chín 2022
Trang chủLập trìnhLập trình C/C++Nạp chồng và ghi đè trong lập trình hướng đối tượng(OOP) C++

Nạp chồng và ghi đè trong lập trình hướng đối tượng(OOP) C++

Nạp chồng (overloading) và ghi đè (overriding) là hai phương thức cơ bản trong lập trình hướng đối tượng. Nạp chồng dùng để tái sử dụng các phương thức cùng tên trong cùng một lớp (class) còn ghi đè được dùng để ghi đè lên các phương thức có tên giống của lớp cơ sở trong lớp kế thừa.

Nạp chồng

hãy tưởng tưởng bạn cần viết một class nhập dữ liệu, bình thường bạn phải khai báo nào là nhapSoNguyen()nhapSoThuc()nhapKiTu(), thay vì khai 3 phương thức riêng biệt như thế người ta sử dụng đến phương thức nạp chồng, tức là thay vì phải khai báo nhiều tên phương thức như trên bạn sẽ chỉ cần khai báo một tên phương thức nhiều lần với những tham số khác nhau, ví dụ:

class NhapTT{
public:
    void nhap (int n){
        cout << "Ban vua nhap so nguyen: " << n << endl;
    }
    void nhap (char kiTu){
        cout << "Ban vua nhap ki tu: " << kiTu << endl;
    }
    void nhap (float soThuc){
        cout << "Ban vua nhap so thuc: " << soThuc << endl;
    }
};

Ở ví dụ trên mình khai báo ba phương thức nhap(agr) với kiểu trả về là void và nhận vào ba kiểu dữ liệu khác nhau lần lượt là int, char và float, khi muốn sử dụng nạp chồng ta chỉ cần truyền tham số tương ứng vào phương thức nhap(agr) như sau:

Kiếm tiền Accesstrade, kiếm tiền tại nhà với Accesstrade.vn – Tiếp thị liên kết
MegaURL – Rút gọn link kiếm tiền có giá cao tại Việt Nam
Top những App kiếm tiền online trên điện thoại tốt nhất hiện nay

int main(){
    int ng;
    char kt;
    float st;
    NhapTT t1; // khai báo đối tượng t1 thuộc lớp NhapTT
    cout << "Nhap so nguyen bat ky: "; cin >> ng;
    t1.nhap(ng);
    cout << "Nhap ki tu bat ky: "; cin >> kt;
    t1.nhap(kt);
    cout << "Nhap so thuc bat ky: "; cin >> st;
    t1.nhap(st);
}

Kết quả:

Nạp chồng và ghi đè trong lập trình hướng đối tượng(OOP) C++

Khi gọi hàm nhap() và truyền vào tham số khác nhau thì chương trình sẽ tự gọi tới hàm tương ứng với tham số.

Ghi đè

Khi một lớp con khai báo một phương thức có tên trùng với phương thức trong lớp cha của nó, phương thức gốc sẽ bị ghi đè. Khi đó bất kỳ lời gọi nào đến phương thức đó được thực hiện bên trong lớp con sẽ chỉ gọi đến phương thức mới.

#include <iostream>
#include <string.h>
using namespace std;


class Oto{//l?p co s? otô
public:
    void in(){
        cout << "toi la oto ahi hi" << endl;
    }
    void in2(){
        cout << "toi la oto ahi hi" << endl;
    }
}; 
class Bus : public Oto{ // l?p k? th?a Bus k? th?a l?p Oto
public:
    void in(){
         cout << "ten toi la bus nhung toi la mot nhanh cua oto" << endl;
    }
}; 
int main(){
    Bus b1; 
    b1.in();
	b1.in2();
}

Kết quả:

Kết quả thực hiện chương trình

Phương thức in() bị ghi đè nên khi được gọi nó sẽ gọi phương thức in() trong lớp kế thừa, phương thức in2() không bị ghi đè nên sẽ gọi đến phương thức của lớp cơ sở.

0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x