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

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

    首先,我们看C++

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

     

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

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

    继承方式 public继承 protected继承 private继承
    基类成员属性 public protected private public protected private public protected private
    基类成员对其对象 可见 不可见 不可见 可见 不可见 不可见 可见 不可见 不可见
    基类成员对派生类 可见 可见 不可见 可见 可见 不可见 可见 可见 不可见
    基类成员对派生类对象 可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见
  • 相关阅读:
    div中嵌套div中使用margin-top失效问题
    thinkphp点击导航变色
    thinkphp I() 方法
    判断是手机端还是电脑端 isMobile()
    手机端H5 header定义样式
    AR.Drone 2.0四轴飞机体验:最好的玩具航拍器
    这是一个专注于电脑技术、软件应用、互联网、嵌入式,电子技术行业等的原创IT博客
    ul li列子
    [HTML]去除li前面的小黑点,和ul、LI部分属性
    Bad update sites
  • 原文地址:https://www.cnblogs.com/howarddeng/p/5554722.html
Copyright © 2011-2022 走看看