通用继承
继承的好处: 减少代码重复量
class 子类 : 继承方式 父类
如: class Java :pubilc BasePage
继承方式 :
子类 public 继承 :
父类中 private 子类不可访问
父类中 protected 子类可protected 访问
父类中 public 子类可public 访问
子类 protected 继承 :
父类中 private 子类不可访问
父类中 protected 子类可protected 访问
父类中 public 子类可protected 访问
子类 private 继承 :
父类中 private 子类不可访问
父类中 protected 子类可private 访问
父类中 public 子类可private 访问
ps: 私有成员只是被隐藏了 但是还是会继承下去 占有内存
继承同名成员处理方式:
在调用中 直接调用只会调用子类数据, 想调用父类数据需要加作用域。
如:cout << s.Base::m_A<<endl;
s.Base::func() ;
同名的静态处理方法:
首先 静态 类内定义 类外初始化。
可通过对象访问 (正常方法)
Son s;
s.m_A;
s.func();
s.Base::func();
可通过类名访问( 不用创建对象 )
Son::m_A;
Son:;func();
链式访问父类作用域
Son::Base::m_A;
Son::Base::fun();
多继承语法:
class 子类 : 继承方式 父类 , 继承方式 父类
(认了几个爹)
当父类中出现了同名成员,需要加作用域区分
菱形继承
两个于第二层父类拥有相同的数据 ,需要加作用域区分 ,但不需要两个数据 浪费内存。所以使用虚继承修饰最大的基类,不管从哪,拿到的只有一个数据。
虚继承
class 子类 : virtual 继承方式 父类
class Sheep: virtual public Animal { } ;