zoukankan      html  css  js  c++  java
  • 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;         
    }
  • 相关阅读:
    主机无法ping通网关,但可以ping通局域网内的其他主机
    linux下安装mysql
    国内python源
    在vue中引入element-ui时报错
    在windows上部署vue
    linux上部署vue开发环境
    vue插件之vue-router路由基本使用
    vue监听属性变化
    vue过滤器
    vue组件的使用
  • 原文地址:https://www.cnblogs.com/jly594761082/p/10416450.html
Copyright © 2011-2022 走看看