zoukankan      html  css  js  c++  java
  • 公有继承

    -----------------siwuxie095

       

       

       

       

       

       

       

       

       

    继承方式

       

       

    C++ 中,继承方式一共有 3 种:

       

       

       

    三个关键字:

       

    1)public:A 公有继承了 B

    2)protected:A 保护继承了 B

    3)private:A 私有继承了 B

       

       

    这里主要介绍 公有继承

       

       

       

       

       

    公有继承

       

       

    1)public 访问限定符在公有继承中的特性

       

    看如下实例:

       

    定义一个人类:Person 和 一个工人类:Worker,工人类公有继承了人类

       

       

       

       

    当工人类 public 的继承了人类后,人类中的数据成员和成员函数在工人类

    中是不用再写的,但却存在于工人类中(工人类中红色标记的部分),而且

    工人类可以访问人类的数据成员和成员函数

       

    再仔细观察,发现:当 Worker 公有继承了 Person 时,Person 中 public

    下所有的成员都会被继承到 Worker 中 public 下

       

       

       

    在使用时:Worker 可以调用父类 Person 的数据成员和成员函数

       

       

       

       

       

       

    2)protected 访问限定符在公有继承中的特性

       

    protected 在不涉及继承的情况下,与 private 的特性是一样的,当涉及到

    继承时,protected 就能显示出它的特点了

       

    对刚才的实例作如下修改:

       

       

       

    对于 Person 中 protected 和 private 下的数据成员,在使用时是不能

    直接访问的,因为它们并不在 public 下面,计算机就会禁止访问

       

       

       

    此外,当实现成员函数 eat() 时,假如在其中访问 名字(m_strName)

    和 年龄(m_iAge),是可以正常访问的

       

       

       

       

    但当涉及到继承时,public 下的成员继承到 public 下,protected 下

    的成员继承到 protected 下

       

       

       

    继承下来后,就可以通过子类 Worker 中的成员函数 work() 来访问从

    父类 Person 中继承来的 m_iAge 了

       

       

       

       

       

    (3)private 访问限定符在公有继承中的特性

       

    public 下的成员继承到 public 下,private 下的成员则被继承到

    Worker 下不可见的位置,而不是 private 下

       

       

       

    因为被继承到不可见位置,所以使用子类 Worker 中的成员函数 work()

    调用父类 Person 的数据成员 m_iAge 就是被禁止的,程序也会编译出错

       

       

       

       

       

    总结:

       

    当两个类产生了继承关系,如果它们的继承方式是 public:

       

    1)基类中 public 下的成员将被继承到派生类中 public 下

    2)基类中 protected 下的成员将被继承到派生类中 protected 下

    3)基类中 private 下的成员在派生类中将无法直接访问,没有被继承到派生类中 private 下

       

       

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    Selenium三种等待的使用方式
    mysql中出现没有权限访问或者查看全部数据库的问题---用客户端第一次打开的时候
    报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
    PAC全自动脚本代理
    dns是什么
    cdn是什么
    vim替换命令
    linux文件权限赋值
    访问nginx-php页面的时候 报access denied.
    配置php时。提示的错误session_start(): Failed to initialize storage module解决办法
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6801417.html
Copyright © 2011-2022 走看看