C 介面多繼承方法重名問題

2021-09-20 02:00:28 字數 979 閱讀 4273

最近實現乙個功能需要繼承兩個介面,然而父類介面有這重名的方法,且方法實現一致。兩個父介面均被多個子介面繼承,並在類例項中實現。起初,我是通過new重名方法來實現我的功能呼叫。後被指正,在網上看了乙個工友解決類似問題的方法,這裡引用記錄一下。

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

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

比如: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}}

墨匠

介面重名方法

實現類要滿足方法過載的基本原則 1 方法名相同 2 引數列表不同 兩個介面中抽象方法重名 1 引數列表 返回值 都相同 實現類只要實現一次此方法即可 2 引數列表相同 返回值不同 實現類無法直接實現兩個方法 ide報錯 因為不滿足方法過載原則 3 引數列表不相同 實現類可以分別實現兩個方法,可以方法...

c 筆記(8) 類的繼承 成員的重名 多繼承

1.類之間的關係 has a 包含關係,用以描述乙個類由多個 部件類 構成。實現has a關係用成員表示,即乙個類中的資料成員是另一種已經定義的類。uses a 乙個類部分地使用另乙個類。通過類之間成員函式的相互聯絡,定義友元或物件引數傳遞實現。is a 機制稱為 繼承 關係具有傳遞性,不具有對稱性...

C 介面實現多繼承

前言 本博文主要講解c 介面實現多繼承,更多關於介面 繼承的知識,請檢視 c 介面 inte ce 精講 c 隱式介面與顯式介面 c 繼承細則,你真的知道嗎?介面是方法的抽象,如果不同的類有同樣的方法,那麼就應該考慮使用介面。c 中介面可以多繼承,介面之間可以相互繼承和多繼承。乙個類可以同時繼承乙個...