1、介面
①介面描述的是可屬於任何類或結構的一組相關功能,所以實現介面的類或結構必須實現介面定義中指定的介面成員。
②介面使用inte***ce
關鍵字進行定義,可由方法、屬性、事件、索引器或這四種成員型別的任意組合構成。
2、介面的特性
①介面類似於抽象基類,不能直接例項化介面;介面中的方法都是抽象方法,實現介面的任何非抽象型別都必須實現介面的所有成員。
②介面不能包含常量、字段、運算子、例項建構函式、析構函式或型別、不能包含靜態成員。
③介面成員是自動公開的,且不能包含任何訪問修飾符。
④介面自身可從多個介面繼承,類和結構可繼承多個介面,但介面不能繼承類。
例子:
inte***ce iprogram
void fun();
class program:
iprogram
//顯式實現介面成員
void iprogram。
fun()
console.writeline("i am fun.");
staticvoid main(string args)
iprogram p =new program();//宣告乙個介面例項,但不是對介面進行例項化
p.fun();
console.read();
3、介面的實現分為兩種:①顯示實現 ②隱式實現
①
顯式實現的話方法是屬於介面的,可以看成是寄託在類中實現的,訪問這些方法時要先把物件轉換成介面物件,然後通過介面物件呼叫。如果類或者結構繼承了多個介面且介面中具有相同名稱成員時,就要用到顯式實現,當顯式實現方式存在時,隱式實現方式就失效了。
②
隱式實現的話實現的方法屬於實現的類的,可以直接通過類的物件訪問。當類或者結構要實現的是單個介面,可以使用隱式實現。
例子:inte***ce iprogram
void fun();
inte***ce iaprogram
void fun();
class program : iprogram, iaprogram
void iprogram.fun() //顯式實現介面
iprogram
console.writeline("i am iprogram fun.");
void iaprogram.fun() //顯式實現介面
iaprogram
console.writeline("i am iaprogram fun.");
//public void fun() //隱式實現介面
// console.writeline("i am program fun.");
staticvoid main(string args)
//iprogram p = new program();
//iaprogram ap = new program();
program pro =new program();
((iprogram)pro).fun();
((iaprogram)pro).fun();
console.read();
4、介面的繼承
介面繼承和類繼承不同:首先,類繼承不僅是說明繼承,而且也是實現繼承;而介面繼承只是說明繼承。派生類可以繼承基類的方法實現,而派生的介面只繼承了父介面的成員方法說明,而沒有繼承父介面的實現,c#
中類繼承只允許單繼承,但是介面繼承允許多繼承,乙個子介面可以有多個父介面。
5、介面的覆蓋
例子:inte***ce iprogram
void fun();
abstract class aprogram : iprogram
public abstract void afun();
void iprogram.fun()
afun();
class program:aprogram
public override void afun()
console.writeline("i am aprogram.");
staticvoid main(string args)
iprogram pro =new program();
pro.fun();
6、介面和抽象類的區別
①介面用於規範,抽象類用於共性。
②介面中只能宣告方法,屬性,事件,索引器。而抽象類中可以有方法的實現,也可以定義非靜態的類變數。
③抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。
④抽象類可以提供某些方法的部分實現,介面不可以。
⑤抽象類的例項是它的子類給出的。介面的例項是實現介面的類給出的
⑥在抽象類中加入乙個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫。
⑦介面成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員
⑧介面不能包含字段、建構函式、析構函式、靜態成員或常量。
Unity3D學習之剛體
前言 以前從未接觸過unity,今天接觸了unity,對自己的一些疑點做了一下總結,之所以接觸unity,是因為在畢業快實習的時候通過朋友介紹,認識了unity,過程就不說了,言歸正傳,開始我們的學習吧 我們想要完成球體自由落體後撞擊倒桌面 如圖 一般我們給球體乙個剛體屬性,球體自由下落 但我們會發...
Unity3D學習之(列舉型別)
首先 我們再次回顧了上次銀行登入系統的登入 的實現!登陸的實現 這段 實現了驗證密碼的正確性和三次輸入不正確就中斷輸入的功能 public void login console.writeline 請輸入密碼 for int i 2 i 0 i password console.readline i...
學習Unity3D之登陸。
歡迎來到 unity學習 unity培訓 unity 企業培訓教育專區,這裡有很多 u3d資源 u3d教程 u3d常見問題 u3d專案原始碼 我們致力於打造業內 unity3d 培訓 學習第一品牌。建立類方法 public student login string name,string passw...