日期:2014-05-20  浏览次数:21141 次

子类会继承父类的私有成员吗?
我相信对于这个问题,理解不同的人回答是不一样的.说说你们是怎么看待这个事的.

------解决方案--------------------
这个问题的答案依赖于你所用的language和相应的compiler对base class 和 derived class 的处理. 但事实上, 在.NET上, sizeof() 以及 memory layout都不能用或不鼓励用(因为你想写CLR compliant的代码).所以这个问题对application developer来说意义已经不大了.
你在derived class里, 看不见base class里面的private members. 你甚至可以在derived class 里面, 完全重新定义这些成员.
所以我的回答是NO.

------解决方案--------------------
呵呵 学校教的时候告诉俺那是不行地!
------解决方案--------------------
在C#当中,一般的说法是,子类继承了父类的所有成员(包括私有成员),但无法访问私有成员

如果你做过窗体的继承就明白了
------解决方案--------------------
我感觉应该是继承了private members,但是你访问不到
------解决方案--------------------
如果你看不见, 也不能访问, 你为什么宁愿认为有继承呢? 如果说别人给了你一笔遗产1百万, 只是说了, 你看不见, 摸不着, 花不成, 你愿意相信你有这继承吗? 比喻不当, 请谅解!
------解决方案--------------------
第一楼的说得很好了,
这个问题的答案依赖于你所用的language和相应的compiler对base class 和 derived class 的处理. 但事实上, 在.NET上, sizeof() 以及 memory layout都不能用或不鼓励用(因为你想写CLR compliant的代码).所以这个问题对application developer来说意义已经不大了.
你在derived class里, 看不见base class里面的private members. 你甚至可以在derived class 里面, 完全重新定义这些成员.
所以我的回答是NO.
--------------------
我觉得这个比较可用:private 100是你的,但它只是购物券,只能在特定的地方做特定的事。你不能换成钱(你看不到),你不能再包装(访问不到)。但它确实存在(如果不存在,父类怎么能运行呢?)
------解决方案--------------------
哈哈:还要改一改应该这么比喻。钱是它father的,从不给son看和拿得到的,但同在一个家里时,father买了东西,son是可以享受得到的。
------解决方案--------------------
晕,基础C++概念,private的东西是不能继承的!!!

否则要Protected做什么?
------解决方案--------------------
C++ != C#
------解决方案--------------------
自己写个反射看看?

另:
public class A
{
private int _age;
public int Age{get{return this._age;}}
}

public class B:A
{
private string _name;
public DateTime Birthdate{get{return DateTime.Now.AddYear(0-this.Age);}}
}

如B不把A的_age成员继承下来,那么Age怎么储存?

------解决方案--------------------
要搞清楚继承和内存存储的概念

如果是继承下来的,_age就应该成为Class B的成员

Class B的内存中存储了_age不叫继承了_age,晕

不要把继承和存储混为一谈

C++中明确指出,向上映射和向下映射的安全性,只是因为内存存储的关系
Class B继承了Class A,对于一个具体对象,Class A的部分是存储在Class B的内存空间中的,但是这叫继承?



------解决方案--------------------
c#中private中子类是被继承的.但是你访问不到.原因很简单.因为是private.
如果你想访问的话.看你想给他暴露给谁了.给外界就public.继承体系中就protected
------解决方案--------------------
可以的,真的曾经有人继承过,相信我,没错的
------解决方案--------------------
不可以访问,但可以重写
------解决方案--------------------
应该算继承