2011-03-05 186 views
0

在C#程序中,我看到了以下聲明:這個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的此接口關係是什麼?界面與類有什麼不同?

回答

7

這意味着myClass派生自myForm1類,並實現了接口myInterface2。不會發生多重繼承,因爲您只擴展一個類。

在Java中,這將有兩個不同的運營商表示,C#只是方便使用的同時:操作:

class myClass extends myForm1 implements myInterface2 

的接口不是類;它(簡單地說)是一個實現類型需要的方法列表(或者遵循的規則列表)。

2

福勒說,

繼承子類在面向對象的語言是一種實現方式,其中子類繼承的數據和超類的操作。它與亞類有很多相同之處,但有重要的不同之處。子類化只是實現子類型化的一種方式...子類化也可以在沒有子類型的情況下使用 - 但大多數作者對這種做法正確地皺眉。較新的語言和標準越來越多地試圖強調接口繼承(子類型)和實現繼承(子類)之間的區別。

出現了兩個問題有關的對象類型之間的關係。首先,沒有一個對象具有單一類型可以從超類型(單個分類)繼承,或它有幾種類型多重分類)?多重分類不同於多重繼承。對於多重繼承,類型可以有許多超類型,但每個實例都是可能有超類型的單一類型。多個分類允許對象的多種類型,而不爲此目的定義特定的類型。

+0

+1爲解決基本概念:但考慮包括提取引號的適當鏈接(或資源),並可能添加其他信息。 – 2011-03-05 03:34:10