您好,登錄后才能下訂單哦!
1:接口的定義
interface 接口名
{
接口成員;
}
接口名必須以大寫的英文字母I開頭。
接口中不能定義字段,也就是說接口中只能包含屬性、方法和事件的定義。
定義接口成員時不可使用訪問修飾符,所有的接口成員都被隱式的定義為公有的。
接口成員只能有聲明,不能有實現。
不用用關鍵字static、virtual、abstract或sealed來定義接口成員。
Type definition members are forbidden.(不懂)
2:抽象類和抽象方法
抽象類是用關鍵字abstract修飾的類。
抽象類不能被實例化。
抽象方法是用關鍵字abstract修飾的方法。
抽象方法只能被定義在抽象類中。
抽象方法不能有方法體。
如果子類繼承了一個抽象類,那么這個子類必須要實現抽象類的所有抽象方法;否則,這個子類也必須是抽象類。
子類在實現抽象方法時,必要要使用關鍵字override。
3:虛方法
虛方法是用關鍵字virtual修飾的方法。
虛方法可以定義在普通類和抽象類中。
虛方法要有方法體。
父類的虛方法可以被子類直接繼承。
子類可以使用override關鍵字重寫父類的虛方法,也可以使用new關鍵字隱藏父類的虛方法。
4:override和new
override:重寫父類的方法(抽象方法、虛擬方法)
new:覆蓋(隱藏)父類的方法(普通方法、虛擬方法)
對于父類的普通方法(非虛擬方法和抽象方法),如果在子類中又定義了相同聲明的方法,那么就是子類覆蓋了(或隱藏了)父類的同名方法。
雖然在子類中可以直接用相同的方法聲明來書寫新的方法,但C#建議應該在方法聲明的開頭加上new關鍵字。
對于覆蓋的方法在調用時的區別:
子類的引用指向子類的對象,調用的是子類的方法;
父類的引用指向子類的對象,調用的是父類的方法。
如果想要在使用父類的引用指向子類的對象時,調用子類的方法(這也是使用多態的一般目的),那么需要:將父類的方法聲明為虛擬方法或抽象方法;在子類中使用override關鍵字進行方法重寫。
5:顯式的調用父類的方法
base.方法名(參數列表)
6:顯式的調用自己的方法
this.方法名(參數列表)
7:實現接口中的方法(還要整理一下)
繼承了接口的類必須要實現接口中所有方法,除了可以將接口中的方法實現為普通方法外,也可以將接口中的方法實現為虛擬方法或抽象方法。
如果在實現接口的類中實現接口中的方法時,在方法名之前加上了接口名限定符(即:接口名.方法名),這種方式稱為“顯式的實現接口成員”,被顯式實現的接口成員只能被接口類型的變量調用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。