c 基本語法 介面

2021-10-11 15:38:49 字數 2714 閱讀 9152

2. 介面的宣告

介面是指定一組函式成員,而不實現他們的引用型別。

我個人感覺,他更是一種規範。

a類

class

aclass

b類

class

bclass

program 類

class

program

;printinfo

(aclass);}

static

void

printinfo

(aclass item)

,年齡是");

}}

這種寫法的問題在於,如果你想通過bclass而不是aclass來實現個人資訊的錄入,這種方法就沒有辦法解決,因為aclassbclass是兩種類。你點出來的東西不一樣。

1.2.1 宣告介面

inte***ce

iinfo

1.2.2 實現介面

class

ainfo

:iinfo

public

int aget

public

string

getage()

public

string

getname()

}

class

binfo

:iinfo

public

string last

public

double personage

public

string

getage()

public

string

getname()

}

1.2.3 在主函式裡呼叫

class

program

;binfo binfo =

newbinfo()

;printinfo

(ainfo)

;printinfo

(binfo);}

static

void

printinfo

(iinfo item)

,年齡是");

}}

注意:在上面引用的地方,我們傳入的是介面,而不是具體實現某個介面的類

public

inte***ce

iinfo

介面是引用型別,可以實現強制型別轉換(即用他兒子冒充他爸)。如下:

static

void

main

(string

args)

;iinfo info =

(iinfo)ainfo;

printinfo

(info)

;}

當時在此過程中,如果類沒有實現介面,那麼表示式應該會丟擲乙個異常,這個時候,可以使用as運算子來避免這個問題,(你應該極力的避免異常,因為他們會嚴重降低**的速度,並將程式置為一種不一致的狀態)

static

void

main

(string

args)

;iinfo info = ainfo as iinfo;

if(info !=

null

)}

如果乙個類實現了多個介面,並且其中一些介面有相同簽名和返回型別的成員,那麼類可以實現單個成員來滿足所有包含重複成員的介面。

如果派生類能實現了基類的成員,那麼即使該類是空的,基類還是可以滿足實現介面方法的需求

inte***ce

iifc1

inte***ce

iifc1

class

aclass

}class

bclass

:aclass

, iifc1

如果單個類,可以實現多個介面所需要的成員,如果我們希望每個幾口分離實現,那就應該使用顯示成員函式實現

宣告

inte***ce

iifc1

inte***ce

iifc2

class

myclass

:iifc1

, iifc2

");}void iifc2.

printout

(string s)")

;}}

呼叫:

static

void

main

(string

args)

c 基本語法 介面

2.介面的宣告 介面是指定一組函式成員,而不實現他們的引用型別。我個人感覺,他更是一種規範。a類 class aclass b類 class bclass program 類 class program printinfo aclass static void printinfo aclass it...

C 抽象方法 虛方法 介面

抽象方法和虛方法都可以寫在抽象類中,它們有什麼區別呢?接下來就讓我帶你分析一下吧。一 virtual方法 虛方法 virtual 關鍵字用於在基類中修飾方法,它有兩種情況 1 在基類中定義virtual方法,但在派生類中沒有重寫該虛方法。那麼在堆派生類例項呼叫中,該虛方法使用的是基類定義的方法。2 ...

JAVASE抽象方法,介面

一抽象類 1抽象類的產生 當編寫乙個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的功能具體實現方式,那麼這些方法都有具體的方法體。但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如乙個圖形類應該有乙個求周長的方法,但是不同的圖形求周長的演...