我们都知道当实例化一个对象时我们的对象只能访问类里的公有数据或者函数。这样看来保护属性和私有属性似乎没有什么区别。这就要引出我们的主角继承。当我们的一个类D(子类)继承另一个类Base(父类)时,我们有公有,保护,私有三种继承方式。不能继承父类的构造和析构。那么我们的子类能访问父类的那些数据呢。
站的子类的角度,子类只能访问父类的公有和保护方法。继承也分别有公有,保护,私有三种方式。继承相当于给子类复制父类的内容,我们的访问限定符会修改我们继承父类数据和函数的属性。公有继承不改变属性。保护继承把原有公有变为保护,私有继承把所有属性都改为私有继承。总结来说就是把父类原有属性大于访问限定符修改为访问限定符。
站在对象的角度:对象只能访问类的公有成员。
公有继承在D的公有方法中访问show1,show2.
公有继承在D的公有方法中访问show3
公有继承D类对象直接访问show1
公有继承D类对象直接访问show2,show3
保护继承在D的公有方法中访问show1,show2.
保护继承在D的公有方法中访问show3
保护继承D类对象直接访问show1,show2,show3
私有继承在D的公有方法中访问show1,show2.
私有继承在D的公有方法中访问show3
私有继承D类对象直接访问show1,show2,show3
总结:继承之后子类不管何种继承属性只能访问父类的公有和保护方法,继承属性影响的继承来父类方法在子类里所表现的属性只是在子类对象访问时表现出来。子类对象永远只能访问公有继承父类的公有方法。
有不对之处,还请各位指出。