gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:11:38 26 4
gpt4 key购买 nike

我一直在问自己这个问题很长一段时间。想过贴出来。 C# 不支持多重继承(这是事实)。在 C# 中创建的所有类都派生自“对象”类(这又是一个事实)。

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

举例说明:

  1. A 类:对象 - A 类已创建。
  2. B 类:对象 - B 类已创建。
  3. A 类:B - 这再次得到支持。早期与对象的关联会发生什么。

经过第 3 步,我们可以在 A 中使用对象类方法。转向多级继承也是如此。如果是这样的话,那么

  1. A 类:B
  2. C 类:B
  3. A 类:C - 我必须能够访问 A 中 B 类的方法。哪一个不是这种情况?

谁能解释一下?

最佳答案

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

以下面的树为例:

public class BaseClass { }

public class SpecialBaseClass : BaseClass {}

public class SpecialtyDerivedClass : SpecialBaseClass {}

这是完全有效的,它说 SpecialtyDerivedClass 继承自 SpecialtyDerivedClass(SpecialtyDerivedClass 的父类),而 SpecialtyDerivedClass 又派生自 BaseClass(SpecialtyDerivedClass 的祖父类)。

在多重继承的思想下,这个例子是这样的:

public class BaseClass { }

public class SpecialBaseClass {}

public class SpecialtyDerivedClass : BaseClass, SpecialBaseClass {}

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

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

public class BaseClass { }

public interface ISpecialBase {}

public interface ISpecialDerived {}

public class SpecialtyDerivedClass : BaseClass, ISpecialBase, ISpecialDerived {}

这表示 SpecialtyDerivedClass 继承自 BaseClass(它的父类)以及 ISpecialBase 和 ISpecialDerived(也是父类的,但更像是继父类,因为接口(interface)无法指定功能)。

关于c# - C# 中的单一继承 - 对象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/191404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com