【问题标题】:What does this C# declaration mean?这个 C# 声明是什么意思?
【发布时间】:2011-03-05 03:05:23
【问题描述】:

在 C# 程序中,我看到以下声明:

public class myForm : Form
public abstract myForm1 : myForm
public interface myInterface
public interface myInterface2 : myInterface
public class myClass : myForm1, myInterface2

myClass 有 myForm1 和 myInterface2 是什么意思?

myForm1 是基类吗?如果是这样,并且 C# 中没有多重继承,那么这个与 myClass 的接口关系是什么?接口与类有何不同?

【问题讨论】:

    标签: c# class interface


    【解决方案1】:

    表示myClass派生自myForm1类,并实现myInterface2接口。不会发生多重继承,因为您只扩展了一个类。

    在 Java 中,这将使用两个不同的运算符来表示,C# 只是方便地使用: 运算符来表示两者:

    class myClass extends myForm1 implements myInterface2
    

    接口不是类;它是(简单地说)实现类型需要具有的方法列表(或要遵循的规则列表)。

    【讨论】:

      【解决方案2】:

      福勒说,

      OO语言中的

      继承子类化是子类继承父类的数据和操作的一种实现方式。它与 subtyping 有很多共同点,但也有重要的区别。子类化只是实现子类型化的一种方式……子类化也可以在没有子类型化的情况下使用——但大多数作者正确地不赞成这种做法。较新的语言和标准越来越多地试图强调 interface-inheritance(子类型化)和 implementation-inheritance(子类化)之间的区别。

      关于对象类型之间的关系有两个问题。首先,一个对象是否具有可以从超类型继承的单一类型单一分类),还是具有几种类型多重分类)?多重分类不同于多重继承。使用多重继承,一个类型可以有许多超类型,但每个实例都是一个可能有超类型的类型。多重分类允许一个对象有多种类型,而无需为此目的定义特定类型。

      【讨论】:

      • +1 用于解决基本概念:但考虑包括从中提取引号的适当链接(或资源),并可能添加其他信息。
      猜你喜欢
      • 2014-09-20
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多