Con trỏ đối tượng và các phương thức tĩnh

Một phần của tài liệu Bài tập lập trình hướng đối tượng c++ cơ bản (Trang 50 - 52)

III. DẠNG PHIẾU.

1. Con trỏ đối tượng và các phương thức tĩnh

Giả sử có 3 lớp A, B, C kế thừa nhau theo cây thứ bậc sau:

Tức lớp B kế thừa lớp A, Lớp C lại kế thừa trực tiếp lớp B.

A B C

Nếu ta khai báo một con trỏđối tượng P thuộc lớp A (A * P) thì: P có thể chứa địa chỉ của các đối tượng thuộc lớp A hoặc B hoặc C.

VD: Ta khai báo: A a, *P; B b; C c; thì ta có thể viết: P = &a; hoặc P = & b; hoặc P = & c;

Xét trường hợp cả 3 lớp A, B, C đều có cùng một phương thức: cùng tên, cùng danh sách các đối, chỉ khác nhau về nội dung phương thức. Khi đó, nếu ta viết: P 

<Tên phương thức>; thì phương thức nào trong 3 phương thức của 3 lớp sẽ được gọi?

Câu trả lời là: Chỉ có phương thức của lớp A sẽđược gọi, cho dù P có trỏ tới đối tượng thuộc lớp B và C.

VD: Xét đoạn trình mô tả 3 lớp A, B, C kế thừa nhau theo cây thứ bậc trên. Cả 3 lớp đều có phương thức giống nhau là phương thức nhap().

class A { int a; public: void nhap() { cout<<"Nhap a "; cin>>a; } }; class B: public A { int b; public: void nhap() {

cout<<" Nhap b "; cin>>b; } }; class C: public B { int c; public: void nhap() {

cout<<" Nhap c "; cin>>c; }

};

Tại hàm main(), ta khai báo 3 đối tượng thuộc 3 lớp A, B, C và một con trỏ p thuộc lớp A. Khi đó, mặc dù p trỏ tới đối tượng của lớp B, C những khi viết p 

nhap() thì phương thức nhap() của lớp A vẫn được gọi. void main()

{

A d1, *p; B d2; C d3;

p = & d2;

p->nhap();//van la phuong thuc nhap() cua lop A p = & d3;

p->nhap();//van la phuong thuc nhap() cua lop A }

Một phần của tài liệu Bài tập lập trình hướng đối tượng c++ cơ bản (Trang 50 - 52)

Tải bản đầy đủ (PDF)

(59 trang)