zoukankan      html  css  js  c++  java
  • 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》一书里面的两句话,觉得挺值得理解下的:


  • 相关阅读:
    JAVA视频网盘分享
    IntelliJ IDEA 2016 完美破解+汉化补丁
    献给java求职路上的你们
    java集合类
    MyEclipse编码设置
    国内外有名的java论坛
    百度编辑器ueditor的简单使用
    工厂模式
    Java静态工厂的理解
    git clone index-pack failed
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586517.html
Copyright © 2011-2022 走看看