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

C# 基类能访问子类公有数据吗?
关于c#继承的数据访问问题搞不明白,求大侠赐教,详细点,不胜感激!

------解决方案--------------------
不能直接访问,可以子类实现基类的方法,并返回子类数据,基类通过调用该方法即可
------解决方案--------------------
说实话,你学习继承怎么用,但是搞了半天,为什么要继承却不理解。

继承的目的是为了程序功能扩展,同时不修改原有的代码。

换一句话说,子类单向依赖父类。这样子类修改不必牵涉到父类,甚至父类早已设计完成,子类可以在父类设计之后设计。比如asp.net中Page类是已经设计好的类(可能随VS2002发布,微软在2002年就定义了它),而你的页面从它继承下来(你可能2012年编写了一个_Default类)。那么你说微软在2002年怎么会想到要访问你2012年设计的_Default的成员?如果一个父类被设计为访问子类的数据,那么你要么应该直接将这个成员定义在父类中,要么应该避免这样的设计。
------解决方案--------------------
这就好比问,能不能把光盘驱动器的托盘当茶杯架。

我回答你不能,你也许会顶针,如果我托盘的强度足够大呢,是不是就可以了。

问题的关键不在于托盘的强度不够大,强度不够大是因为托盘本身不是为做茶杯架而设计的。而不是因为它强度不够大所以不能做茶杯架。

菜鸟的思维永远停留在用自己固执的方式实现程序。然后用山寨的方式解决问题。同时产生新的问题。孤立地看,每个问题似乎都有解。但是问题是这些问题本身是之前的问题创造出来的问题。所以随着项目规模的扩大,他们解决问题的速度将赶不上制造问题的速度,工作中有效劳动的比例越来越低。当达到一定规模,他们就完全在解决无效问题的恶寻循环中无法前进,所以他们总是低水平地重复。
------解决方案--------------------
本质上,你可以把一个子类当作一个毫无关系的普通类一样去访问它的成员。

这就好比,你可以使用goto语句将程序跳转到任意地方一样。但是这是绝对错误的设计。你试图在绝对错误的设计上寻找解决方案,本质上是在搞破坏。所以无解比你知道一个破坏的解更好。