c++继承

一、类之间的关系

  has-A   包含关系,用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是另一种已经定义的类。

  uses-A  一个类部分地使用另一个类。通过类之间成员函数的相互联系,定义友员或对象参数传递实现。

  is-A   机制称为“继承”。关系具有传递性,不具有对称性。

二、继承的重要说明

  1、子类拥有父类的所有成员变量和成员函数

  2、子类可以拥有父类没有的方法和属性

  3、子类就是一种特殊的父类

  4、子类对象可以当作父类对象使用

 

三、类与继承的访问控制

  1.类中成员的访问控制

    public:在类的内部、外部都能使用

    protected:在类的内部使用,在继承的子类中使用

    private:只能在类的内部,不能在类的外部(包括继承中的子类也不能使用)

  2. C++中的继承方式会影响子类的对外访问属性

    public继承:父类成员在子类中保持原有访问级别

    private继承:父类成员在子类中变为private成员

    protected继承:父类中public成员会变成protected

                            父类中protected成员仍然为protected

                            父类中private成员仍然为private

  3. ‘三看’原则

    1)看调用语句,这句话写在子类的内部、外部

            2)看子类如何从父类继承(public、private、protected)     

            3)看父类中的访问级别(public、private、protected)

 

四、继承中的兼容性原则

  类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。

void howtoPrint(parent *base) {
     base->printP();父类的成员函数   
}

void howtoPrint2(parent &base) {
     base.printP();父类的成员函数   
}
{  
    //第一种含义:

  parent p1;

  child c1;

  parent *p = NULL;

  //1-1 基类指针(引用)指向子类对象

  p = &c1;
  p->printP();
      //1-2 指针做函数参数  
      howtoPrint(&p1);
      howtoPrint(&c1);
      //引用做函数参数
       howtoPrint2(p1);
      howtoPrint2(c1); 
      //第二种含义:
      //可以用 子类对象初始化父类对象
      parent p3 = c1;         
}

 

posted @ 2019-02-22 09:29  星星之火可以燎源  阅读(2100)  评论(0编辑  收藏  举报