日韩午夜福利a无码,三级亚洲中文字幕,免费高清av一区二区三区,国产精品白丝祙喷水视频

您現(xiàn)在所在的位置:首頁(yè) >學(xué)習(xí)資源 > Unity游戲/VR/AR入門(mén)教材 > VR開(kāi)發(fā)入門(mén)教程30:控制臺(tái)編程 接口和索引器

VR開(kāi)發(fā)入門(mén)教程30:控制臺(tái)編程 接口和索引器

來(lái)源:奇酷教育 發(fā)表于:

接口在構(gòu)建問(wèn)題的類過(guò)程中,我們經(jīng)常會(huì)遇到一種特殊的情況,在描述某個(gè)類的各個(gè)方法時(shí),對(duì)每個(gè)方法我們只能給出其功能實(shí)現(xiàn)的要求(原形聲明

接口
在構(gòu)建問(wèn)題的類過(guò)程中,我們經(jīng)常會(huì)遇到一種特殊的情況,在描述某個(gè)類的各個(gè)方法時(shí),對(duì)每個(gè)方法我們只能給出其功能實(shí)現(xiàn)的要求(原形聲明)但不能給出具體的功能實(shí)現(xiàn)(函數(shù)定義體)。因?yàn)槲覀兯幚淼膯?wèn)題只是一個(gè)泛泛的功能說(shuō)明,并沒(méi)有針對(duì)某一具體類型的問(wèn)題來(lái)說(shuō)明。
 
含義:    
一組只有成員方法聲明沒(méi)有方法體的方法集。    
接口定義了一組成員函數(shù),但沒(méi)有具體加以實(shí)現(xiàn),其實(shí)現(xiàn)則是由實(shí)現(xiàn)該接口的類來(lái)加以具體完成的。
 
接口中只能包含方法、屬性、索引器和事件的聲明。
接口的定義
要點(diǎn):類似于類的定義格式,只是以 interface作為定義符。
 
格式:
[訪問(wèn)修飾符] interface 接口名
返回值類型 方法名([參數(shù)列表]);(只有聲明而無(wú)方法體)
}
或:
[訪問(wèn)修飾符] interface 派生的接口名 : 父接口名列表
 {     
返回值類型 方法名([參數(shù)列表]);(只有聲明而無(wú)方法體)
 }
 
接口中聲明的方法都是默認(rèn)public的 不能自定義訪問(wèn)級(jí)別
接口中聲明索引器的方法:
返回值類型 this [【參數(shù)列表】最少有一個(gè)參數(shù)]{set;get;}
 
示例:
public interface Dispaly
{
     void ViewImage();
}
接口實(shí)現(xiàn)
通過(guò)定義一個(gè)類同時(shí)采用:來(lái)指明所實(shí)現(xiàn)的接口名,并在該類中實(shí)現(xiàn)接口中的所有成員方法且給出方法體定義。
 
類中所實(shí)現(xiàn)的接口中的成員函數(shù)的原型都應(yīng)該與它在 接口中的原型定義保持一致;
并在類中重寫(xiě)接口中的所有成員方法;
通過(guò)實(shí)現(xiàn)接口,從而可擴(kuò)充或增加該類的功能。
接口只定義方法名,而類實(shí)現(xiàn)接口內(nèi)部的方法的代碼
 
語(yǔ)法:
class 類名 : 接口列表(,分割)
{
     // 所有接口定義方法的實(shí)現(xiàn)
}
 
一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
 
接口的實(shí)現(xiàn)分為:隱式實(shí)現(xiàn)和顯式實(shí)現(xiàn)。
如果類或者結(jié)構(gòu)要實(shí)現(xiàn)的是單個(gè)接口,可以使用隱式實(shí)現(xiàn)
如果類或者結(jié)構(gòu)實(shí)現(xiàn)了多個(gè)接口那么接口中相同名稱成員就要顯式實(shí)現(xiàn)。
顯式實(shí)現(xiàn)是通過(guò)使用接口的完全限定名(接口名.方法名)來(lái)實(shí)現(xiàn)接口成員的。
接口回調(diào)
接口也是引用數(shù)據(jù)類型,指向接口的引用也可以指向任意實(shí)現(xiàn)了該接口的類創(chuàng)建的實(shí)例
接口回調(diào),即接口的引用可以指向?qū)崿F(xiàn)了接口的類的實(shí)例
 
接口回調(diào)均可以訪問(wèn)到實(shí)現(xiàn)類里實(shí)現(xiàn)的方法
 
注意:
顯式實(shí)現(xiàn)的方法只能用接口回調(diào)來(lái)調(diào)用到
無(wú)法用實(shí)現(xiàn)類引用調(diào)用到
示例:
public interface IHello
{
void Bellow();
}
 
///
/// 顯式接口實(shí)現(xiàn)
///
public class Speak : IHello
{
    void IHello.Bellow()
    {
        Console.WriteLine("Hello");
    }
}
 
class MainClass
{
    public static void Main (string[] args)
    {
        Speak speak = new Speak();
        //speak.Bellow() error
        (speak as IHello).Bellow();// 不安全 原因:無(wú)法保證待轉(zhuǎn)換的對(duì)象所在的類確實(shí)實(shí)     
                                             現(xiàn)了該接口 有可能出現(xiàn)空指針異常
        IHello ih = speak as IHello;
        if (ih != null)
        {
           ih.Bellow();//安全
        }
    }
}