實現介面6

2021-03-31 08:56:58 字數 1832 閱讀 5330

在進行介面對映時,還要注意下面兩點:

1、在決定由類中的哪個成員來實現介面成員時,類中顯式說明的介面成員比其它成員優先實現。

2、使用private、protected和static修飾符的成員不能參與實現介面對映。例如:

inte***ce icloneable

class c: icloneable

public object clone( )

}例子中成員icloneable.clone 稱為介面icloneable 的成員clone 的實現者,因為它是顯式說明的介面成員,比其它成員有著更高的優先權。

如果乙個類實現了兩個或兩個以上名字、型別和引數型別都相同的介面,那麼類中的乙個成員就可能實現所有這些介面成員:

inte***ce icontrol

inte***ce iform

class page: icontrol, iform

} 這裡,介面icontrol和iform的方法paint都對映到了類page中的paint方法。當然也可以分別用顯式的介面成員分別實現這兩個方法:

inte***ce icontrol

inte***ce iform

class page: icontrol, iform

public void iform.paint( )

}上面的兩種寫法都是正確的。但是如果介面成員在繼承中覆蓋了父介面的成員,那麼對該介面成員的實現就可能必須對映到顯式介面成員執行體。看下面的例子:

inte***ce ibase

}inte***ce iderived: ibase

介面iderived從介面ibase中繼承,這時介面iderived 的成員方法覆蓋了父介面的成員方法。因為這時存在著同名的兩個介面成員,那麼對這兩個介面成員的實現如果不採用顯式介面成員執行體,編譯器將無法分辨介面對映。所以,如果某個類要實現介面iderived,在類中必須至少定義乙個顯式介面成員執行體。採用下面這些寫法都是合理的:

//一:對兩個介面成員都採用顯式介面成員執行體來實現

lass c: iderived

int iderived.p( )

}//二:對ibase 的介面成員採用顯式介面成員執行體來實現

class c: iderived

public int p( )

}//三:對iderived 的介面成員採用顯式介面成員執行體來實現

class c: iderived

int iderived.p( )

}另一種情況是,如果乙個類實現了多個介面,這些介面又擁有同乙個父介面,這個父介面只允許被實現一次。

using system ;

inte***ce icontrol

inte***ce ilistbox: icontrol

class ***bobox: icontrol, itextbox, ilistbox

void itextbox.settext(string text)

void ilistbox.setitems(string items)

}上面的例子中,類***bobox實現了三個介面:icontrol,itextbox和ilistbox。如果認為***bobox不僅實現了icontrol介面,而且在實現itextbox和ilistbox的同時,又分別實現了它們的父介面icontrol。實際上,對介面itextbox 和ilistbox 的實現,分享了對介面icontrol 的實現。

我們對c#的介面有了較全面的認識,基本掌握了怎樣應用c#的介面程式設計,但事實上,c#的不僅僅應用於.***平台,它同樣支援以前的***,可以實現***類到.***類的轉換,如c#呼叫api。欲瞭解這方面的知識,請看下一節-介面轉換。

SwiftUI 初體驗 6 實現複雜介面

首先看目標效果是實現乙個列表,巢狀可以橫向滑動的row,頭部是banner 暫時佔位,後面的章節實現 定義最小的單位item renderingmode設定original是顯示影象本身,resizable必須在frame修改前設定,padding可以調整item之間的位置關係 struct spe...

日誌6月29日 課表介面和畢業照介面實現

課表介面 課表設計參考了網上比較成熟的介面設計 wxml 採用scroll view布局。pages courselist courselist.wxml top class top text 周 true class scroll height 1200rpx width 730rpx displ...

VC6無負擔實現XP風格介面

vc 6無負擔實現xp 風格介面 關於讓自己的程式介面實現xp 風格這個問題,在網上的討論很多,大多數的作法都是寫乙個 manifest 檔案,然後將檔名改一下,比如 exe 檔案為test.exe 就將這個 manifest 檔案改名成 test.exe.manifest 並將其和 test.ex...