Phạm vi | public | protected | private |
Thành viên của cùng một lớp | được phép | được phép | được phép |
Thành viên của lớp dẫn xuất | được phép | được phép | không được phép |
Còn lại | được phép | không được phép | không được phép |
Như tôi đã giới thiệu ở trên, một biến thành viên được chỉ định từ khóa chỉ mức truy cập là private thì chỉ có các phương thức trong cùng một lớp hoặc các phương thức bạn mới có quyền truy cập (bao gồm hàm bạn và lớp bạn). Nếu mức truy cập là public, thì mọi phương thức đều có quyền truy cập đến. Tôi xin giải thích kĩ hơn cho bạn đối với từ khóa protected. Tôi cũng đã trình bày về các khả năng mà một phương thức có thể truy cập đến một biến thành viên được khai báo là protected:
- Tương tự như các mức truy cập của private.
- Từ các phương thức của một lớp dẫn xuất.
- Từ các phương thức bạn của lớp dẫn xuất (bao gồm hàm bạn và lớp bạn).
Đối với trường hợp đầu tiên, chung ta không thảo luận thêm. Chúng ta sẽ quan tâm đến hai khả năng sau cùng. Đối với khả năng thứ hai, bạn có thể quan sát ví dụ sau đây:
Ví dụ | Kết quả |
#include class Polygon{ protected: int w, h; public: void SetValue(int w, int h){ this->w = w; this->h = h; } }; class Rectangle:public Polygon{ public: int GetArea(){ return w*h; } }; int main() { Rectangle rec; rec.SetValue(4, 5); cout< return 0; } | 20 |
Trong trường hợp, bạn của một lớp dẫn xuất, bạn có thể quan sát ví dụ minh họa sau đây:
Ví dụ | Kết quả |
#include class Polygon{ protected: int w, h; public: void SetValue(int w, int h){ this->w = w; this->h = h; } }; class Rectangle:public Polygon{ public: int GetArea(){ return w*h; } friend void ShowWH(Rectangle); }; void ShowWH(Rectangle p){ cout< int main() { Rectangle rec; rec.SetValue(4, 5); ShowWH(rec); return 0; } | 4×5 |
No comments:
Post a Comment