C++ 继承基础

在学习继承之前, 首先要对类有着比较多的了解, 不大熟悉的可先看这里

继承是C++的一大精髓之所在, 同时继承也是有着难点, 本篇从基础部分介绍.

继承的关系大概是这样的:

 上图的 "父亲" 的类叫做基类, 父类或超类

 上图的 "孩子"与"孙子"以及可能出现更多的"子子孙孙"的类叫做子类

而这种的结构图叫做: 继承层次结构

 在编写继承的时候, 结构图一定要先理出来, 分析出来.

这些理论先要理清楚, 再实现

扫描二维码关注公众号,回复: 8664026 查看本文章

为了能更好地理解, 本人使用Windows平台上的win32的窗口思想来举一个类似继承的例子:

(注意: win32编程中窗口没有继承, 但是可以用继承层次结构来分析)

 在继承结构中, 一定要注意箭头的方向, 注意是由 子类->父类, 而不是 父类->子类

继承有以下基本特点:

  1. 继承时子类可以访问父类的 public, protected 数据成员, 但不得访问 private部分 (子类具有并可以修改访问父类的 public, protected 的数据成员)

  2. 继承时子类能访问到父类的数据, 但父类无权访问子类 (如上图箭头所示)

  3. 继承中当子类的指针或引用要转换为父类时, 会发生截断现象

  4. 继承具有多态性

首先解释一下:

 1. 数据截断可以理解为当发生子类的引用或指针转父类时, 子类中独有的数据将会全部丢失

 2. 多态性其实就是在解释上面的第1点, 也就是子类不仅具有父类的数据, 也可以有自己的独有的数据

现在尝试编写继承: 

class Basic
{
    string myPrivate="Private";
    protected:
        string myProtected="Protected";
    public:
        string myPublic="Public";
};
class Child: public Basic //继承一个类的表示方法
{
    public:
        void getMembers()
        {
            cout<<myPublic<<endl;//Worked
            cout<<myProtected<<endl;//Worked
            cout<<myPrivate<<endl;//Error!
        }
};
int main()
{
    Child child;
    child.getMembers();
    return 0;
}

实践表明, private无法访问.

有关继承的基础部分已结束, 请等待更新.

猜你喜欢

转载自www.cnblogs.com/tweechalice/p/12205737.html
今日推荐