公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。
1. 公有继承(public)
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类所访问。
子类可以自动转换成父类
Chiled c;
ParentA p=c; //没问题
2. 私有继承(private)
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类和其他平行类所访问。私有继承的一个著名用途——让某个类不能当作基类去派生其他类,即Java的final关键字的功能
子类不能自动转换成父类:ParentA p=c;错误
3. 保护继承(protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问
子类不能自动转换成父类:ParentA p=c;错误
下面列出三种不同的继承方式的基类特性和派生类特性。
子类\父类 public protected private
共有继承 public protected 不可见
私有继承 private private 不可见
保护继承 protected protected 不可见
如果子类与父类有同名成员,子类实例默认是访问子类自己的成员,如果子类没有该成员,则访问父类的成员
在子类中访问 ParentA::index 并不代表index是父类ParentA 的静态成员,index可以是父类 ParentA 的实例成员