• C++的三种继承方式简述


    C++对父类(也称基类)的继承有三种方式,分别为:public继承、protected继承、private继承。三种继承方式的不同在于继承之后子类的成员函数的“可继承性质”。

    在说三种继承方式导致的子类成员函数可继承性质改变之前,先说一下在定义类的成员(包括函数和属性)的时候,在其前面添加public 或 protected 或 private对成员的可继承性的影响。其中,public类型的成员,在被继承的时候,能直接被子类使用,注意,如果成员属性是public的话,子类则可直接调用该成员属性。例如:

    class A  // 父类
    {
    public:
          A();
          int size;
    }
    class B:public A   // 子类
    {
    public:
        change(const int x)
       {
          size = x;
        }
    }

    我这里写了个很简单的例子,其中父类A具有一个public类型的成员函数A()和一个public类型的成员属性size(int)。因为size是public的,所以在A的子类B中,B的成员函数可以直接调用size进行修改。因为size也是B的属性并且是可见也是可修改的。

    如果成员是protected的话,表明只有这个类的继承类(子女)或者友好的类(friend)能购使用(直接调用)这些成员,否则不能使用。然后private成员的话固然是只有自己本身这个类可用,对其他任何类都不可见,也不可用,引用百度百科上的一段话概括这三者就是:

    1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

    2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

    3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

    好,下面进入正题,就是三种对父类的不同继承方式对子类可继承方式的影响:

    (1)public继承:

    不改变父类成员的继承性质(public、protected、private),也就是说,父类public的成员在子类中仍然是public的,父类protected的成员在子类中仍然是protected的。

    (2)protected继承:

    父类public类型的成员在子类中变为protected性质,protected的被继承依然是protected的。

    (3)private继承:

    父类所有成员在被子类中都变成或者保留为private性质的。

    嗯,就这么简单。

    **********  2016-8-16补充  ***********

    今天看到《Datastructure and algorithm analysis in java》一书里面的两句话,觉得挺值得理解下的:


  • 相关阅读:
    64最长和谐子序列(594)
    63找到字符串中所有字母异位词(438)
    62有效的数独(36)
    10.10
    9.27作业
    9.27
    9.26
    9.25
    9.18学习内容
    9.17作业
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586517.html
Copyright © 2020-2023  润新知