一、抽象類:
抽象類是特殊的類,只是不能被實(shí)例化;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能聲明于抽象類中,且不包含任何實(shí)現(xiàn),派生類必須覆蓋它們。
另外,抽象類可以派生自一個(gè)抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

二、接口:
接口是引用類型的,類似于類,更和抽象類有所相似,以至于很多人對(duì)抽象類和接口的區(qū)別比較模糊。和抽象類的相似之處有三點(diǎn):
1、不能實(shí)例化;
2、包含未實(shí)現(xiàn)的方法聲明;
3、派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員);
另外,接口有如下特性:
接口除了可以包含方法之外,還可以包含屬性、索引器、事件,而且這些成員都被定義為公有的。除此之外,不能包含任何其他的成員,例如:常量、域、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員。
一個(gè)類可以直接繼承多個(gè)接口,但只能直接繼承一個(gè)類(包括抽象類)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

注意!還有另外一種類不能被實(shí)例化:
所有構(gòu)造函數(shù)都被標(biāo)記為private,這種類也是不能被實(shí)例化的,嚴(yán)格的說(shuō)是不能在類外被實(shí)例化,可以在此類的內(nèi)部實(shí)例化(這種方式可以用于實(shí)現(xiàn)單件設(shè)計(jì)模式)。注意一點(diǎn),這樣的類也不能夠作為基類來(lái)繼承。
三、抽象類和接口的使用:
抽象類用于部分實(shí)現(xiàn)一個(gè)類,再由用戶按需求對(duì)其進(jìn)行不同的擴(kuò)展和完善;接口只是定義一個(gè)行為的規(guī)范或規(guī)定。
抽象類在組件的所有實(shí)現(xiàn)間提供通用的已實(shí)現(xiàn)功能;接口創(chuàng)建在大范圍全異對(duì)象間使用的功能。
抽象類主要用于關(guān)系密切的對(duì)象;而接口適合為不相關(guān)的類提供通用功能。
抽象類主要用于設(shè)計(jì)大的功能單元;而接口用于設(shè)計(jì)小而簡(jiǎn)練的功能塊。
例如:
Window窗體可以用抽象類來(lái)設(shè)計(jì),可以把公有操作和屬性放到一個(gè)抽象類里,讓窗體和對(duì)話框繼承自這個(gè)抽象類,再根據(jù)自己的需求進(jìn)行擴(kuò)展和完善。
打印操作可以作為一個(gè)接口提供給每個(gè)需要此功能的窗體,因?yàn)榇绑w的內(nèi)容不同,就要根據(jù)他們自己的要求去實(shí)現(xiàn)自己的打印功能。打印時(shí)只通過(guò)接口來(lái)調(diào)用,而不用在乎是那個(gè)窗體要打印。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
