Tóm Tắt
Kế thừa với public, protected và private trong lập trình C++
Trong bài này, bạn sẽ được học về thừa kế với public, protected và private trong C + +. Bạn sẽ được học nơi nào và khi nào nó được sử dụng, kèm theo ví dụ .
Bạn có thể khai báo một lớp kế thừa từ một lớp chính với điều khiển truy xuất khác nhau, nghĩa là kế thừa với public, kế thừa với protected và kế thừa với private.
#include
using namespace std;
class base
{
.... ... ....
};
class derived : chỉ_định_truy_xuất base
{
.... ... ....
};
Lưu ý: Tất cả các từ khóa public, protected hay private đều được sử dụng tại vị trí từ khóa chỉ_định_truy_xuất ở đoạn mã trên.
Ví dụ sử dụng kế thừa với public, protected và private trong C++
class base
{
public:
int x;
protected:
int y;
private:
int z;
};
class publicDerived: public base
{
// x có kiểu public
// y có kiểu protected
// z không thể được truy xuất từ publicDerived
};
class protectedDerived: protected base
{
// x có kiểu protected
// y có kiểu protected
// z không thể được truy xuất từ protectedDerived
};
class privateDerived: private base
{
// x có kiểu private
// y có kiểu private
// z không thể được truy xuất từ privateDerived
}
Trong ví dụ trên, hoàn toàn có thể thấy những điểm sau :
-
base có ba biến thành viên: x, y và z với chỉ định truy xuất lần lượt là public, protected và private.
-
publicDerived kế thừa biến x và y với kiểu public và protected. Trong khi z không được kế thừa vì nó là một biến private của base.
-
protectedDerived kế thừa biến x và y. Cả hai biến đều có kiểu protected. z không thể được kế thừa.
Nếu tất cả chúng ta thừa kế một lớp derivedFromProtectedDerived từ lớp protectedDerived, biến x và y cũng sẽ được thừa kế trong lớp thừa kế đó .
-
privateDerived kế thừa biến x và y. Cả hai đều có kiểu private. z không được kế thừa.
Nếu tất cả chúng ta thừa kế một lớp derivedFromPrivateDerived từ privateDerived, biến x và y sẽ không được thừa kế vì chúng là biến private của privateDerived .
Khả năng truy xuất trong kế thừa với public
Khả năng truy xuất |
Biến private |
Biến protected |
Biến public |
Truy xuất từ chính lớp đó ? |
có |
có |
có |
Truy xuất từ lớp thừa kế ? |
không |
có |
có |
Truy xuất từ lớp thừa kế đời thứ 2 |
không |
có |
có |
Khả năng truy xuất trong kế thừa với protected
Khả năng truy xuất |
Biến private |
Biến protected |
Biến public |
Truy xuất từ chính lớp đó ? |
có |
có |
có |
Truy xuất từ lớp thừa kế ? |
không |
có |
có ( thừa kế dưới dạng những biến protected ) |
Truy xuất từ lớp thừa kế đời thứ 2 |
không |
có |
có |
Khả năng truy xuất trong kế thừa với private
Khả năng truy xuất |
Biến private |
Biến protect |
Biến public |
Truy xuất từ chính lớp đó ? |
có |
có |
có |
Truy xuất từ lớp thừa kế ? |
không |
có ( thừa kế dưới dạng biến private ) |
có ( thừa kế dưới dạng những biến private ) |
Truy xuất từ lớp thừa kế đời thứ 2 |
không |
không |
không |
Source: https://final-blade.com
Category: Kiến thức Internet