Unity之介面總結
阿新 • • 發佈:2019-01-09
介面:1.屬於任何類或結構的一組相關功能
2.定義:interface關鍵字定義,可由方法,屬性,事件,索引器這四種成員型別的任意組合組成
例子:interface EatBehairor{}
介面的特徵:
1、介面類似於抽象基類,不能直接例項化介面;介面中的方法都是抽象方法,實現介面的任何非抽象型別都必須實現介面的所有成員。
2、介面不能包含常量、欄位、運算子、例項建構函式、解構函式或型別、不能包含靜態成員。
3、介面成員是自動公開的,且不能包含任何訪問修飾符。
4、介面自身可從多個介面繼承,類和結構可繼承多個介面,但介面不能繼承類。
例子:
interface 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();
}
}
5.一般情況,當類或者結構要實現的是單個介面,可以使用隱式實現。
6.如果類或者結構繼承了多個介面且介面中具有相同名稱成員時,就要用到顯式實現,當顯式實現方式存在時,隱式實現方式就失效了。
class Program : IProgram, IAProgram
{
void IProgram.Fun() //顯式實現介面IProgram
{
Console.WriteLine("I am IProgram Fun.");
}
void IAProgram.Fun() //顯式實現介面IAProgram
{
Console.WriteLine("I am IAProgram Fun.");
}
介面的繼承:
介面繼承和類繼承不同:
1.類繼承不僅是說明繼承,而且也是實現繼承;而介面繼承只是說明繼承。
2.類繼承只允許單繼承,但是介面繼承允許多繼承,一個子介面可以有多個父介面。
interface IProgram
{
void Fun();
}
interface IAProgram:IProgram
{
}
class Program : IAProgram
{
void IProgram.Fun()
{
Console.WriteLine("I am IProgram Fun.");
}
staticvoid Main(string[] args)
{
Program pro =new Program();
((IAProgram)pro).Fun();
}
}
介面的覆蓋:
一個類如果實現了某個介面那麼它必須覆蓋該介面中的所有方法
interface 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();
}
}
介面和抽象類的區別
1.介面用於規範,抽象類用於共性。
2.介面中只能宣告方法,屬性,事件,索引器。而抽象類中可以有方法的實現,也可以定義非靜態的類變數。
3.抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。
4.抽象類可以提供某些方法的部分實現,介面不可以。
5.抽象類的例項是它的子類給出的。介面的例項是實現介面的類給出的。
6.在抽象類中加入一個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是一個類的規範了)。
7.介面成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的程式碼或派生類中訪問)。
8.此外介面不能包含欄位、建構函式、解構函式、靜態成員或常量。
MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0
2.定義:interface關鍵字定義,可由方法,屬性,事件,索引器這四種成員型別的任意組合組成
例子:interface EatBehairor{}
介面的特徵:
1、介面類似於抽象基類,不能直接例項化介面;介面中的方法都是抽象方法,實現介面的任何非抽象型別都必須實現介面的所有成員。
2、介面不能包含常量、欄位、運算子、例項建構函式、解構函式或型別、不能包含靜態成員。
3、介面成員是自動公開的,且不能包含任何訪問修飾符。
4、介面自身可從多個介面繼承,類和結構可繼承多個介面,但介面不能繼承類。
例子:
interface 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();
}
}
5.一般情況,當類或者結構要實現的是單個介面,可以使用隱式實現。
6.如果類或者結構繼承了多個介面且介面中具有相同名稱成員時,就要用到顯式實現,當顯式實現方式存在時,隱式實現方式就失效了。
class Program : IProgram, IAProgram
{
void IProgram.Fun() //顯式實現介面IProgram
{
Console.WriteLine("I am IProgram Fun.");
}
void IAProgram.Fun() //顯式實現介面IAProgram
{
Console.WriteLine("I am IAProgram Fun.");
}
介面的繼承:
介面繼承和類繼承不同:
1.類繼承不僅是說明繼承,而且也是實現繼承;而介面繼承只是說明繼承。
2.類繼承只允許單繼承,但是介面繼承允許多繼承,一個子介面可以有多個父介面。
interface IProgram
{
void Fun();
}
interface IAProgram:IProgram
{
}
class Program : IAProgram
{
void IProgram.Fun()
{
Console.WriteLine("I am IProgram Fun.");
}
staticvoid Main(string[] args)
{
Program pro =new Program();
((IAProgram)pro).Fun();
}
}
介面的覆蓋:
一個類如果實現了某個介面那麼它必須覆蓋該介面中的所有方法
interface 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();
}
}
介面和抽象類的區別
1.介面用於規範,抽象類用於共性。
2.介面中只能宣告方法,屬性,事件,索引器。而抽象類中可以有方法的實現,也可以定義非靜態的類變數。
3.抽象類是類,所以只能被單繼承,但是介面卻可以一次實現多個。
4.抽象類可以提供某些方法的部分實現,介面不可以。
5.抽象類的例項是它的子類給出的。介面的例項是實現介面的類給出的。
6.在抽象類中加入一個方法,那麼它的子類就同時有了這個方法。而在介面中加入新的方法,那麼實現它的類就要重新編寫(這就是為什麼說介面是一個類的規範了)。
7.介面成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內部的或受保護的內部成員(其中受保護的內部成員只能在應用程式的程式碼或派生類中訪問)。
8.此外介面不能包含欄位、建構函式、解構函式、靜態成員或常量。
MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0