最近實現乙個功能需要繼承兩個介面,然而父類介面有這重名的方法,且方法實現一致。兩個父介面均被多個子介面繼承,並在類例項中實現。起初,我是通過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 中介面可以多繼承,介面之間可以相互繼承和多繼承。乙個類可以同時繼承乙個...