Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个C#声明意味着什么?_C#_Class_Interface - Fatal编程技术网

这个C#声明意味着什么?

这个C#声明意味着什么?,c#,class,interface,C#,Class,Interface,在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#程序中,我看到以下声明:

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的接口关系是什么?接口与类有何不同?

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

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

class myClass extends myForm1 implements myInterface2
接口不是类;它(简单地说)是一个实现类型需要拥有的方法列表(或要遵循的规则列表)。

Fowler说

OO语言中的继承和子类化是一种实现方法,其中子类继承超类的数据和操作。它与子类型有很多共同点,但也有重要区别。子类化只是实现子类型化的一种方法。。。子类化也可以在没有子类型的情况下使用——但大多数作者都不赞成这种做法。较新的语言和标准越来越强调接口继承(子类型化)和实现继承(子类化)之间的区别

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


+ 1用于解决潜在的概念:但考虑包括适当的链接(或资源),从中提取引文,并可能添加额外的信息。