有一个类叫“老人”,
“老人”这个类继承与“人”,
“人”这个类继承与“哺乳动物”,
“哺乳动物”这个类有继承于“动物”。在C#中“老人”这个类不能同时继承于人和哺乳动物两个类。如果必须要这样,就自能通过接口来实现。C#中一个子类只能有一个父类。
这句话就是说,一个孩子只能有一个爸爸,但是一个爸爸,可以有多个孩子。这样理解对吗?

解决方案 »

  1.   

    你的“老人”继承自“人”,“人”继承自“哺乳动物”...那““老人”这个类不能同时继承于人和哺乳动物两个类”的说法是从哪儿钻出来的呢?老人 as 人 & 老人 as 哺乳动物 & 老人 as 动物...
      

  2.   


    class是可以传递的,因此老人已经继承自哺乳动物了!尽管老人在代码上继承自人,但是老人既是人也是哺乳动物,已经没有问题。说继承关系是父子关系,是毫不懂继承,而且滥用继承。继承是“is_a”的关系,而不是“has_a”的关系。老人x本身就是人x,而不能说人x就是他自己的爸爸(除非进了疯人院)。
      

  3.   

    而不能说人x就是他自己的爸爸  -->  但不能说人x就是他自己的爸爸要对那些把聚合关系滥用成继承的坚决打击,才能保证你设计的纯洁、一致性。
      

  4.   

    class是可以传递的,interface是不可以传递的,这是它们的很大的区别。要注意。
      

  5.   

    上面居然还要叫好的,我不知道好在何处?
    什么叫人不能继承自哺乳动物? 人本来就是哺乳动物变来的.这一点因为继承的年代过于久远所以一般没人提了.
    如果一个人还在大街上嚷嚷着:我是大猩猩变来的,这个人肯定是从六角亭跑出来的.A继承至B,B继承自C, 当然A也就间接地继承自C了.这是不言自明的道理,还需要去显示继承吗?
      

  6.   


    不够严谨啊,这里的传递指什么呢?class可以继承别的class
    interface也可以引用别的interface