日期:2014-05-18  浏览次数:20775 次

关于继承问一二?
各位好,本人初学继承,有几个不明白的地方希望大家多帮忙!

问题一:继承时内存的变化?(为什么子类可以使用父类的非私有成员?)

问题二:里氏替换时的内存变化?(以前学的都是 用自身的类型去创建一个自身类型的对象,而这里是父类变量能够装载子类对象,这是为什么呢?)

希望各位能够提供一些专业资料,小弟感激不尽!

------解决方案--------------------
如果你不是实现编译器或者CLR,理解这些有什么用呢?

而且你的问题根本就是错的。子类使用的不是“父类的非私有成员”,而是自己的非私有成员,只是这些成员是从父类继承而来的。至少从面向对象的逻辑上你应该这样认为。

如同人从哺乳动物继承而来,那么你调用人的四肢,就是人的四肢本身,而不是人体内装着一个小哺乳动物,你通过调用它来调用四肢。尽管像C++这样从非面向对象编程语言(C语言)演进过来的,可能在内部实现上使用了这样的方式,但是你仍然不应该这么去理解。