在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的接口关系是什么?界面与班级有何不同?
答案 0 :(得分:7)
这意味着myClass
派生自myForm1
类,并实现myInterface2
接口。没有多重继承发生,因为你只扩展了一个类。
在Java中,这将用两个不同的运算符表示,C#只是方便地使用:
运算符:
class myClass extends myForm1 implements myInterface2
接口不是类;它(简单地说)是一个实现类型需要的方法列表(或者要遵循的规则列表)。
答案 1 :(得分:2)
OO语言中的继承和子类化是一种实现方法,其中子类继承超类的数据和操作。它与子类型有很多共同之处,但存在重要差异。子类化只是实现子类型的一种方式......子类化也可以在没有子类型的情况下使用 - 但是大多数作者都对这种做法不屑一顾。较新的语言和标准越来越多地试图强调接口继承(子类型)和实现继承(子类化)之间的区别。
关于对象和类型之间的关系,出现了两个问题。首先,对象是否具有可以从超类型继承的单一类型(单一分类),还是具有多种类型(多个分类强>)?多重分类与多重继承不同。对于多重继承,类型可以具有许多超类型,但每个实例都是可以具有超类型的单个类型。多重分类允许对象使用多种类型,而无需为此目的定义特定类型。