C 中介面多重繼承的注意事項

2021-04-01 15:20:54 字數 1057 閱讀 5491

經常,乙個類會實現多個介面,比如使用者的乙個控制項繼承自"iedit"和"icombo",每個介面無疑都有乙個paint方法來供子類實現如何畫他們,但是多重繼承就會出現問題,預設情況下,c#止允許實現paint方法。

現在有乙個比較鑽牛角尖的問題,如何在派生的類裡面實現這兩個介面的相同名稱的方法呢?

通過試驗,翻閱msdn,我總結了這麼幾條規律:

msdn配合理解

1。要麼只實現乙個方法,否則函式重明,就會存在二義性

2。如果確實想兩個方法都實現,必須在介面的實現部分注意這麼幾點:

比如:void iface1.print();

void iface2.print();

(2)。對於不通名稱的方法,事項是前面必須冠以"public"識別符號。

以上兩個規則缺一不可,否則會收到編譯錯誤。

3。建立類例項時,如何飲用不通介面的相同方法呢?方法如下:

1。如果呼叫那個介面的實現,則必須將示例強制轉換為相應介面型別。

比如:

facetoface face;

((iface1)face).print();或者

((iface2)face).print();

完整的例子見下面

using system;

namespace testinte***ce

inte***ce iface2

class facetoface : iface1,iface2

public void hello()

#endregion

#region iface2 成員

public void goodbye()

void iface2.print()

#endregion

}class class1}}

C 中介面多重繼承的注意事項

經常,乙個類會實現多個介面,比如使用者的乙個控制項繼承自 iedit 和 icombo 每個介面無疑都有乙個paint方法來供子類實現如何畫他們,但是多重繼承就會出現問題,預設情況下,c 止允許實現paint方法。現在有乙個比較鑽牛角尖的問題,如何在派生的類裡面實現這兩個介面的相同名稱的方法呢?1。...

C 中介面多重繼承的注意事項

經常,乙個類會實現多個介面,比如使用者的乙個控制項繼承自 iedit 和 icombo 每個介面無疑都有乙個paint方法來供子類實現如何畫他們,但是多重繼承就會出現問題,預設情況下,c 止允許實現paint方法。現在有乙個比較鑽牛角尖的問題,如何在派生的類裡面實現這兩個介面的相同名稱的方法呢?通過...

Java繼承注意事項

錯誤寫法 class computer1 class computer2 如果想同時繼承兩個父類怎麼辦呢?class computer1 class computer2 extends computer1 class pad extends computer2 class computer1 cla...