访问权限
-
protected(保护)访问权限
为什么要使用protected访问权限?
子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问。
只有通过父类的public函数来间接访问,不是很方便。
比如,刚才Demo中Father类中的name和age成员。
class Father {
public:
Father() {
name = "无名";
age = 0;
}
Father(const char* name, int age) {
this->name = name;
this->age = age;
}
string get_name()const {
return name;
}
int get_age()const {
return age;
}
private:
string name;
int age;
};
解决方案:
把name和age定义为protected访问访问权限。
protected:
string name;
int age;
效果:
Son类的成员函数中,可以直接访问它的父类的protected成员。
但是在外部,别人又不能直接通过Son对象来访问这些成员。
//定义一个儿子类
class Son : public Father {
public:
Son(const char* name, int age) {
this->name = name;
this->age = age;
}
};
一个类, 如果希望, 它的成员, 可以被自己的子类(派生类)直接访问,
但是, 又不想被外部访问那么就可以把这些成员, 定义为 protected访问权限!!!
-
访问权限总结:
public
外部可以直接访问.
可以通过对象来访问这个成员
Fahter wjl(“王健林”, 65);
wjl.get_name();
private
外部不可以访问
自己的成员函数内, 可以访问
Fahter wjl(“王健林”, 65);
wjl.name; // 错误!!!
Father内的所有成员函数内, 可以直接访问name
protected
protected和private非常相似
和private的唯一区别:
protecte: 子类的成员函数中可以直接访问
private: 子类的成员函数中不可以访问