zoukankan      html  css  js  c++  java
  • 面向对象语言成员变量方法可见性在继承中的变化

    最近做得的有点杂,接触到几种面向对象的语言,C#,C++,JAVA .在一个情景下,软件的框架已经写好了,我们要对其功能实现增加和修改,这种情况是经常发生的,那么在面向对象的程序设计中我们要怎么做呢。我们都知道面向对象语言有几个特点,多态,封装,继承,既然框架已经写好了,我们修改功能可以考虑用继承的方法去实现新的功能,那么这样做对原有的功能会有影响么?这就涉及到成员变量成员方法可见性在继承中的变化了。

    首先,我们看C++

    派生类通过继承,将基类的成员作为自己的一部分,但不同的继承方式导致基类的成员在派生类中具有不同的属性。我们首先使用下图表示,基类成员继承后将会在派生类中表现的访问属性: 

     

    上图是单继承的方式,也没有涉及派生再次派生的情况。但这两种情况都可以使用该图的逻辑进行推导。就像再次派生的情况,只要将派生类当做基类看待就可以了。 

    到这里我们已经知道了基类中的成员在继承类中的属性,那么再通过一个角度详述可见性问题。

    继承方式 public继承 protected继承 private继承
    基类成员属性 public protected private public protected private public protected private
    基类成员对其对象 可见 不可见 不可见 可见 不可见 不可见 可见 不可见 不可见
    基类成员对派生类 可见 可见 不可见 可见 可见 不可见 可见 可见 不可见
    基类成员对派生类对象 可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见
  • 相关阅读:
    前端+php实现概率抽奖
    rem.js的用法及在浏览器端的适配
    python 使用记录及问题
    python 工具链 虚拟环境和包管理工具 pipenv
    python 工具链 多版本管理工具 pyenv
    python 工具链 包管理工具 pip
    ansible 使用记录
    mongodb connection refused because too many open connections: 819
    wordpress 常用操作
    服务器硬件测试
  • 原文地址:https://www.cnblogs.com/howarddeng/p/5554722.html
Copyright © 2011-2022 走看看