一牙捉、抽象類與接口
1竹揍、類似處:他們都包含可以由派生類繼承的成員敬飒。都不能實(shí)例化,但可以聲明他們的變量芬位。如果這樣做无拗,
就可以使用多態(tài)性把繼承這兩中類型的對象指定給他們的變量。接著通過這些變量來使用這些類型的成員昧碉,但
不能直接訪問派生對象的其它成員英染。
2、區(qū)別:派生類只能繼承一個(gè)基類被饿,即只能直接繼承一個(gè)抽象類四康,但可以通過一個(gè)繼承鏈來包含多個(gè)抽
象類。相反狭握,類可以使用任意多個(gè)接口闪金。
按照定義,接口成員是公共的(因?yàn)樗鼈儍A向于外部使用)论颅,但抽象類的成員可以是私有的哎垦、受保護(hù)
的、內(nèi)部的或受保護(hù)的內(nèi)部成員恃疯。
此外漏设,接口不能包含字段、構(gòu)造函數(shù)今妄、靜態(tài)成員或常量 郑口。
3、這說明這兩種類型用于完全不同的目的蛙奖。抽象類主要用作對象系列的基類潘酗,共享某些主要的特性,例
如共同的目的和結(jié)構(gòu)雁仲。接口則主要用于類仔夺,這些類在基礎(chǔ)水平上有所不同,但仍可以完成某些相同的任務(wù)攒砖。
舉例說明:假如有一個(gè)對象系列表現(xiàn)火車缸兔,基類Train包含火車的核心定義,比如輪胎和引擎規(guī)格吹艇。但這
個(gè)類是抽象的惰蜜,我們不能開著這樣的火車 。所以受神,我們給它添加一些特性(真實(shí)的發(fā)動(dòng)機(jī)抛猖、好的輪胎),得到了“蒸汽”和“汽油”火車兩個(gè)派生類 Train_A
和 Train_B 。
接著财著,我們來考慮联四,汽車做好了,我們可以用來做什么?對撑教,搭乘客朝墩,裝貨物,而這兩種方法我們可以
放在接口 Interface 中伟姐,這樣他們就有了共同的任務(wù)收苏。
二、結(jié)構(gòu)類型
1愤兵、結(jié)構(gòu)和類非常相似鹿霸,但結(jié)構(gòu)是值類型的,類是引用類型的恐似,這意味著什么?舉例說明:
運(yùn)行后杜跷,得到的結(jié)果是 :
A.val =20, B.val=20 , C.val=30, D.val=40 。
想了解更多c#相關(guān)知識嗎矫夷,詳情請咨詢C#語言視頻教程葛闷。