标签:
最近做得的有点杂,接触到几种面向对象的语言,C#,C++,JAVA .在一个情景下,软件的框架已经写好了,我们要对其功能实现增加和修改,这种情况是经常发生的,那么在面向对象的程序设计中我们要怎么做呢。我们都知道面向对象语言有几个特点,多态,封装,继承,既然框架已经写好了,我们修改功能可以考虑用继承的方法去实现新的功能,那么这样做对原有的功能会有影响么?这就涉及到成员变量成员方法可见性在继承中的变化了。
首先,我们看C++
派生类通过继承,将基类的成员作为自己的一部分,但不同的继承方式导致基类的成员在派生类中具有不同的属性。我们首先使用下图表示,基类成员继承后将会在派生类中表现的访问属性:
上图是单继承的方式,也没有涉及派生再次派生的情况。但这两种情况都可以使用该图的逻辑进行推导。就像再次派生的情况,只要将派生类当做基类看待就可以了。
到这里我们已经知道了基类中的成员在继承类中的属性,那么再通过一个角度详述可见性问题。
继承方式 | public继承 | protected继承 | private继承 | ||||||
基类成员属性 | public | protected | private | public | protected | private | public | protected | private |
基类成员对其对象 | 可见 | 不可见 | 不可见 | 可见 | 不可见 | 不可见 | 可见 | 不可见 | 不可见 |
基类成员对派生类 | 可见 | 可见 | 不可见 | 可见 | 可见 | 不可见 | 可见 | 可见 | 不可见 |
基类成员对派生类对象 | 可见 | 不可见 | 不可见 | 不可见 | 不可见 | 不可见 | 不可见 | 不可见 | 不可见 |
标签:
原文地址:http://www.cnblogs.com/howarddeng/p/5554722.html