当前位置:  开发笔记 > 编程语言 > 正文

C#中的单一继承 - 对象类?

如何解决《C#中的单一继承-对象类?》经验,为你挑选了2个好方法。

我很久以来一直在问自己这个问题.想发布它.C#不支持多重继承(这是事实).在C#中创建的所有类都派生出'Object'类(同样是一个事实).

因此,如果C#不支持多继承,那么即使它已经扩展了Object类,我们如何才能扩展一个类?

用一个例子说明:

    A类:对象 - 创建的A类.

    B类:对象 - 创建B类.

    A类:B - 再次支持.早期与对象的关联会发生什么.

我们能够在步骤3之后在A中使用对象类方法.因此转向多级继承.如果是这样的话,那么

    A类:B

    C级:B

    A类:C - 我必须能够在A中访问B类的方法.事实并非如此?

有人可以解释一下吗?



1> Joel Coehoor..:

你将多重继承与继承树混淆了.您可以继承Object之外的其他内容.只是Object坐在你树顶的那里.有人可以继承你的类,但是因为Object仍然位于顶层,所以该类也将继承自object.您的"多级"继承不是多重继承.

多重继承是从两个不同的树继承而来的.Net实际上通过接口来支持这种.



2> Scott Dorman..:

乔尔的回答是正确的.多继承和inhertance树(或派生链)之间存在差异.在您的示例中,您实际显示了一个inhertance树:一个对象从树中较高的另一个对象继承(派生).多重继承允许一个对象从多个基类继承.

举例来说,以下树:

public class BaseClass { }

public class SpecialBaseClass : BaseClass {}

public class SpecialtyDerivedClass : SpecialBaseClass {}

这是完全有效的,并且说SpecialtyDerivedClass继承自SpecialBaseClass(SpecialtyDerivedClass'parent),而SpecialBaseClass又派生自BaseClass(SpecialtyDerivedClass'祖父母).

在多重继承的想法下,示例如下所示:

public class BaseClass { }

public class SpecialBaseClass {}

public class SpecialtyDerivedClass : BaseClass, SpecialBaseClass {}

这在.NET中是不允许的,但它表示SpecialityDerivedClass继承自BaseClass和SpecialBaseClass(它们都是父类).

.NET允许您从多个接口继承,从而允许一种多重继承形式.稍微改变上面的例子:

public class BaseClass { }

public interface ISpecialBase {}

public interface ISpecialDerived {}

public class SpecialtyDerivedClass : BaseClass, ISpecialBase, ISpecialDerived {}

这表示SpecialtyDerivedClass继承自BaseClass(它的父级)以及ISpecialBase和ISpecialDerived(也是父级的,但更像是步骤父级,因为接口不能指定功能).

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有