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

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

    首先,我们看C++

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

     

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

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

    继承方式 public继承 protected继承 private继承
    基类成员属性 public protected private public protected private public protected private
    基类成员对其对象 可见 不可见 不可见 可见 不可见 不可见 可见 不可见 不可见
    基类成员对派生类 可见 可见 不可见 可见 可见 不可见 可见 可见 不可见
    基类成员对派生类对象 可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见 不可见
  • 相关阅读:
    ASP.NET MVC 扩展相关
    新.NET开发十大必备工具
    c#调用存储过程两种方法
    TweakUI取消pc喇叭声
    baidu mp3竟然还加密,太扯了
    NTLM在使用代理服务器的情况下,第三次握手可能出错
    httpclient解析gzip网页
    eclipse不能自动编译工程的解决方法
    bat设置环境变量
    java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
  • 原文地址:https://www.cnblogs.com/howarddeng/p/5554722.html
Copyright © 2011-2022 走看看