我很久以来一直在问自己这个问题.想发布它.C#不支持多重继承(这是事实).在C#中创建的所有类都派生出'Object'类(同样是一个事实).
因此,如果C#不支持多继承,那么即使它已经扩展了Object类,我们如何才能扩展一个类?
用一个例子说明:
A类:对象 - 创建的A类.
B类:对象 - 创建B类.
A类:B - 再次支持.早期与对象的关联会发生什么.
我们能够在步骤3之后在A中使用对象类方法.因此转向多级继承.如果是这样的话,那么
A类:B
C级:B
A类:C - 我必须能够在A中访问B类的方法.事实并非如此?
有人可以解释一下吗?
你将多重继承与继承树混淆了.您可以继承Object之外的其他内容.只是Object坐在你树顶的那里.有人可以继承你的类,但是因为Object仍然位于顶层,所以该类也将继承自object.您的"多级"继承不是多重继承.
多重继承是从两个不同的树继承而来的.Net实际上通过接口来支持这种.
乔尔的回答是正确的.多继承和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(也是父级的,但更像是步骤父级,因为接口不能指定功能).