2. 介面的宣告
介面是指定一組函式成員,而不實現他們的引用型別。
我個人感覺,他更是一種規範。
a類
class
aclass
b類
class
bclass
program 類
class
program
;printinfo
(aclass);}
static
void
printinfo
(aclass item)
,年齡是");
}}
這種寫法的問題在於,如果你想通過bclass
而不是aclass
來實現個人資訊的錄入,這種方法就沒有辦法解決,因為aclass
和bclass
是兩種類。你點出來的東西不一樣。
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抽象類的產生 當編寫乙個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的功能具體實現方式,那麼這些方法都有具體的方法體。但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如乙個圖形類應該有乙個求周長的方法,但是不同的圖形求周長的演...