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

C#继承问题。。。
假设有三个类A、B、C
B继承A(因为需要,有很多类需要同时继承A和B,所以这样设计)
但我有一个类C,需要继承B,但由于特殊原因又不能继承A
请问,这种情况下怎么办?(别不是要写一个与类B完全相同的类D,D不继承~~!)

------解决方案--------------------
看你不能继承A的具体情况了,为什么不能继承
------解决方案--------------------
《Head First设计模式》中 说到一句话
多要组合 少用继承
要明白is a ; has a
------解决方案--------------------
如果真想你所说,只能说你的设计非常不合理,类的功能混乱,你可以考虑接口继承,只需要继承相关的接口,不要认为继承是什么好东西
------解决方案--------------------
显然B不应该继承于A。产品基本类能和验证用户登录是否有效有什么关系?
------解决方案--------------------
A类为验证用户登录是否有效。。。
B类为一些产品基本类


你真的觉得B可以继承A么~~~ 设计真的很不合理的说

dog is a animal is a
zoo has a dog has a

public class Zoo
{
Dog dog;
Cat cat;//很明显 这里动物园和阿猫阿狗都不是继承关系,但Zoo也拥有阿猫阿狗的都有东西 如同继承
}

------解决方案--------------------
dog is a animal is a 这个才可以使用继承
zoo has a dog has a 这个不能使用继承,再说 你的用户和产品比起动物园和狗 还相差很远

------解决方案--------------------
一些人写的程序的四周有一个看不见的玻璃罩,你意识不到它的存在,但是你的程序规模不能超越它,否则你会发现程序哪怕再修改或者扩展一点点都举步维艰。

他们不屑于系统地学习,觉得自己和传说中的高手已经差不多了。结果发现,人家能自如地往前走,而你走着走着就给拦住了。

如果你能意识到这一点,而虚心学习,而不是盲目地乐观和一付不屑于顾自我感觉超级良好的架势结果搞一个头破血流,那就善莫大焉了。
------解决方案--------------------
探讨
一些人写的程序的四周有一个看不见的玻璃罩,你意识不到它的存在,但是你的程序规模不能超越它,否则你会发现程序哪怕再修改或者扩展一点点都举步维艰。

他们不屑于系统地学习,觉得自己和传说中的高手已经差不多了。结果发现,人家能自如地往前走,而你走着走着就给拦住了。

如果你能意识到这一点,而虚心学习,而不是盲目地乐观和一付不屑于顾自我感觉超级良好的架势结果搞一个头破血流,那就善莫大焉了。