“继承基类方法接口的含义”
首先,类方法分为实现与接口。所谓方法接口,是用于描述类内与类外交互的途径,因此,只有能够在类外,通过类对象直接对类方法进行调用,才能称为继承了接口。
公有继承与私有继承
公有继承:基类方法将被添加进派生类的公有部分,成为派生类的公有方法,因此可以通过派生类对象对继承的基类方法进行调用。因此在公有继承机制下,派生类继承了基类的接口,为is-a关系的一部分。
私有继承:基类方法将被添加进派生类的私有部分,成为派生类的私有方法,因此不可以通过派生类对象对继承的基类方法进行调用。因此在私有继承机制下,派生类不继承基类的接口,为has-a关系的一部分。
无论是公有继承还是私有继承,派生类都继承了基类的方法实现,因此都可以在派生类作用域内调用基类方法,例如在派生类方法定义中。
派生类继承基类
继承将把基类对象作为一个未命名的继承对象添加进派生类中,具体将基类的public、private、protected公有、私有、保护部分分别添加进派生类的哪个部分,取决于采取的继承机制(公有继承、私有继承、保护继承)。对于继承的对象,可以用术语子对象来表示。这也侧面体现了通过继承方式,基类与派生类之间的存在关系。
基类是以一个未命名的继承对象的形式被添加进派生类中,注意,一是以对象,即整体的形式被添加进派生类中的,二是未命名。
如果是在私有继承机制下(基类的成员被添加进派生类的私有部分,基类接口不被继承)或基类方法被添加进派生类的私有部分,要在派生类方法中继承的基类继承对象的方法进行调用,则需要采用基类名称和作用域解析运算符来显式地调用,此时能够体现继承的基类对象是以整体的形式存在于派生类对象中的。如果要访问派生类中的基类对象(子对象、未命名的继承对象),则可以使用强制转换的方式,将派生类对象通过强制转换转换得到基类对象。而在派生类内,要访问派生类对象只需要使用this指针即可轻松实现。