Unity3D學習之(介面)

2021-06-27 11:55:58 字數 2919 閱讀 9973

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...