在C++中,類的繼承訪問權(quán)限主要有三種:public(公有)、protected(保護(hù))和private(私有)。這些訪問權(quán)限決定了基類成員在派生類中的可見性。
Public(公有)繼承: 當(dāng)一個(gè)類公開繼承另一個(gè)類時(shí),基類的公有成員和保護(hù)成員在派生類中都保持公有,而基類的私有成員在派生類中不可訪問。這意味著派生類的用戶可以訪問基類的公有和保護(hù)成員,但不能訪問私有成員。
示例:
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : public Base {
public:
void accessMembers() {
publicMember = 10; // 可以訪問
protectedMember = 20; // 可以訪問
// privateMember = 30; // 錯(cuò)誤!無法訪問基類的私有成員
}
};
Protected(保護(hù))繼承: 當(dāng)一個(gè)類保護(hù)繼承另一個(gè)類時(shí),基類的公有成員和保護(hù)成員在派生類中都變?yōu)楸Wo(hù)成員,而基類的私有成員仍然不可訪問。這意味著派生類的用戶不能訪問基類的公有成員,但可以訪問保護(hù)成員。派生類的成員函數(shù)可以訪問基類的公有和保護(hù)成員。
示例:
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : protected Base {
public:
void accessMembers() {
// publicMember = 10; // 錯(cuò)誤!無法訪問基類的公有成員
protectedMember = 20; // 可以訪問
// privateMember = 30; // 錯(cuò)誤!無法訪問基類的私有成員
}
};
Private(私有)繼承: 當(dāng)一個(gè)類私有繼承另一個(gè)類時(shí),基類的公有成員和保護(hù)成員在派生類中都變?yōu)樗接谐蓡T,而基類的私有成員仍然不可訪問。這意味著派生類的用戶不能訪問基類的任何成員(公有、保護(hù)或私有)。派生類的成員函數(shù)可以訪問基類的公有和保護(hù)成員,但不能訪問私有成員。
示例:
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : private Base {
public:
void accessMembers() {
// publicMember = 10; // 錯(cuò)誤!無法訪問基類的公有成員
// protectedMember = 20; // 錯(cuò)誤!無法訪問基類的保護(hù)成員
// privateMember = 30; // 錯(cuò)誤!無法訪問基類的私有成員
}
};
總之,C++類的繼承訪問權(quán)限允許您控制基類成員在派生類中的可見性。公有繼承使得基類成員在派生類中保持公有,保護(hù)繼承使得基類成員在派生類中變?yōu)楸Wo(hù)成員,而私有繼承使得基類成員在派生類中變?yōu)樗接谐蓡T。