亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

讀代碼 abstract class和interface的區別

2019-11-11 03:21:31
字體:
來源:轉載
供稿:網友

public abstract class AbstractIosession impements IoSession{}

定義了一系列的屬性和方法,配合著final 關鍵字,基本上大部分都不希望子類進行重寫,然后讓子類繼承  再其他操作中使用子類,不能實例化自身

java語言中,abstract class和interface是支持抽象類定義的兩種機制。正是由于這兩種機制的存在,才賦予了Java強大的面向對象能力。abstract class和interface之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發者在進行抽象類定義時對于abstract class和interface的選擇顯得比較隨意。其實,兩者之間還是有很大的區別的,對于它們的選擇甚至反映出對于問題領域本質的理解、對于設計意圖的理解是否正確、合理。

 

 

Abstract class

Interface

實例化

不能

不能

一種繼承關系,一個類只能使用一次繼承關系??梢酝ㄟ^繼承多個接口實現多重繼承

一個類可以實現多個interface

數據成員

可有自己的

靜態的不能被修改即必須是static final,一般不在此定義

方法

可以私有的,非abstract方法,必須實現

不可有私有的,默認是public,abstract 類型

變量

可有私有的,默認是friendly 型,其值可以在子類中重新定義,也可以重新賦值

不可有私有的,默認是public static final 型,且必須給其初值,實現類中不能重新定義,不能改變其值。

設計理念

表示的是“is-a”關系

表示的是“like-a”關系

實現

需要繼承,要用extends

要用implements

abstract class和interface在Java語言中都是用來進行抽象類(本文中的抽象類并非從abstract class翻譯而來,它表示的是一個抽象體,而abstract class為Java語言中用于定義抽象類的一種方法)定義的,那么什么是抽象類,使用抽象類能為我們帶來什么好處呢?

聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。

接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現 這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。 然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到 接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。

接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是可以繼承實體類,但前提是實體類必須有明確的構造函數。接口更關注“能實現什么功能”,而不管“怎么實現的”。

1.相同點  A. 兩者都是抽象類,都不能實例化。  B. interface實現類及abstrct class的子類都必須要實現已經聲明的抽象方法。

2. 不同點  A. interface需要實現,要用implements,而abstract class需要繼承,要用extends。  B. 一個類可以實現多個interface,但一個類只能繼承一個abstract class。  C. interface強調特定功能的實現,而abstract class強調所屬關系。   D. 盡管interface實現類及abstrct class的子類都必須要實現相應的抽象方法,但實現的形式不同。interface中的每一個方法都是抽象方法,都只是聲明的 (declaration, 沒有方法體),實現類必須要實現。而abstract class的子類可以有選擇地實現。  這個選擇有兩點含義:    一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類必須實現。那些沒有abstract的方法,在Abstrct class中必須定義方法體。    二是abstract class的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現,也可以通過再次聲明其方法為抽象的方式,無需實現,留給其子類來實現,但此類必須也聲明為抽象類。既是抽象類,當然也不能實例化。  E. abstract class是interface與Class的中介。  interface是完全抽象的,只能聲明方法,而且只能聲明pulic的方法,不能聲明PRivate及protected的方法,不能定義方法體,也 不能聲明實例變量。然而,interface卻可以聲明常量變量,并且在JDK中不難找出這種例子。但將常量變量放在interface中違背了其作為接 口的作用而存在的宗旨,也混淆了interface與類的不同價值。如果的確需要,可以將其放在相應的abstract class或Class中。  abstract class在interface及Class中起到了承上啟下的作用。一方面,abstract class是抽象的,可以聲明抽象方法,以規范子類必須實現的功能;另一方面,它又可以定義缺省的方法體,供子類直接使用或覆蓋。另外,它還可以定義自己 的實例變量,以供子類通過繼承來使用。

3. interface的應用場合  A. 類與類之前需要特定的接口進行協調,而不在乎其如何實現。  B. 作為能夠實現特定功能的標識存在,也可以是什么接口方法都沒有的純粹標識。  C. 需要將一組類視為單一的類,而調用者只通過接口來與這組類發生聯系。  D. 需要實現特定的多項功能,而這些功能之間可能完全沒有任何聯系。

4. abstract class的應用場合  一句話,在既需要統一的接口,又需要實例變量或缺省的方法的情況下,就可以使用它。最常見的有:  A. 定義了一組接口,但又不想強迫每個實現類都必須實現所有的接口。可以用abstract class定義一組方法體,甚至可以是空方法體,然后由子類選擇自己所感興趣的方法來覆蓋。  B. 某些場合下,只靠純粹的接口不能滿足類與類之間的協調,還必需類中表示狀態的變量來區別不同的關系。abstract的中介作用可以很好地滿足這一點。

  C. 規范了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實現;而另一些方法卻需要各個子類根據自己特定的狀態來實現特定的功能。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品极品美女在线观看免费| 国产精品直播网红| 日韩国产欧美精品一区二区三区| 青青在线视频一区二区三区| 亚洲精品资源美女情侣酒店| 亚洲国产精品视频在线观看| 国产精品福利久久久| 亚洲午夜女主播在线直播| 美女999久久久精品视频| 性欧美办公室18xxxxhd| 色综合影院在线| 欧美电影免费观看网站| 日韩高清中文字幕| 性欧美xxxx交| 欧美日韩在线一区| 国产精品福利久久久| 国产精品v日韩精品| 欧美极品xxxx| 欧美激情久久久久久| 国产精品视频一区国模私拍| 成人网欧美在线视频| 亚洲wwwav| 国产精品福利在线观看| 日韩精品在线私人| 久久精品美女视频网站| 久久精品视频网站| 国产精品人成电影在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产一区二区在线播放| 精品欧美激情精品一区| 中文字幕日韩av| 亚洲精品国精品久久99热| 欧美自拍视频在线| 最近2019年中文视频免费在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 一本色道久久综合狠狠躁篇怎么玩| 九九视频这里只有精品| 久久久亚洲福利精品午夜| 欧美在线观看日本一区| www国产精品com| 成人淫片在线看| 亚洲国产精品悠悠久久琪琪| 欧美性videos高清精品| 国产精品嫩草影院一区二区| 在线视频精品一| 最新国产成人av网站网址麻豆| 国产精品久久久久久一区二区| 日韩精品免费在线观看| 亚洲国产私拍精品国模在线观看| 成人写真视频福利网| 久久成年人免费电影| 欧洲一区二区视频| 91久久国产婷婷一区二区| 日韩69视频在线观看| 精品国产1区2区| 亚洲国产成人精品女人久久久| 日韩精品极品毛片系列视频| 8x拔播拔播x8国产精品| 欧美国产精品日韩| 日韩欧美在线视频| 国产精品美女无圣光视频| 51ⅴ精品国产91久久久久久| 亚洲精品国产成人| 亚洲黄一区二区| 91精品中文在线| 亚洲成av人影院在线观看| 国产成人精品免费视频| 91欧美精品午夜性色福利在线| 性欧美激情精品| 色综合导航网站| 中文字幕亚洲自拍| 日韩成人在线视频网站| 欧美成aaa人片在线观看蜜臀| 91九色视频导航| 欧美日韩国产页| 日本精品性网站在线观看| 亚洲国产欧美在线成人app| 97超碰色婷婷| 亚洲欧洲黄色网| 国产精品91久久| 91中文在线观看| 久久99亚洲精品| 91sao在线观看国产| 欧美日韩在线观看视频| 亚洲欧美一区二区三区在线| 久久全球大尺度高清视频| 最新国产精品亚洲| 亚洲视频在线观看网站| 国产午夜精品一区二区三区| 一级做a爰片久久毛片美女图片| 国产精品久久久久久av| 欧美性高跟鞋xxxxhd| 蜜臀久久99精品久久久无需会员| 国产一区二区三区直播精品电影| 中文字幕精品在线视频| 国产日韩综合一区二区性色av| 国产网站欧美日韩免费精品在线观看| 国产精品一区二区3区| 国产精品羞羞答答| 亚洲国产精彩中文乱码av在线播放| 一区二区国产精品视频| 伊人男人综合视频网| 亚洲精品视频免费在线观看| 欧美日韩一区二区三区在线免费观看| 欧美有码在线观看| 亚洲福利在线播放| 欧美性xxxx在线播放| 青草青草久热精品视频在线观看| 亚洲精品动漫100p| 亚洲qvod图片区电影| 欧美一区二区三区免费视| www.日韩不卡电影av| 国产精品久久999| 97av在线视频| 国产精品观看在线亚洲人成网| 久久亚洲成人精品| 亚洲欧美日韩爽爽影院| 日韩电影中文字幕在线观看| 宅男66日本亚洲欧美视频| 国产亚洲精品一区二555| 日韩女优在线播放| 亚州国产精品久久久| 日韩高清a**址| 日本成人黄色片| 欧美国产日韩一区二区三区| 久久影院免费观看| 国产+人+亚洲| 免费99精品国产自在在线| 国产精品亚洲片夜色在线| 68精品国产免费久久久久久婷婷| 国产日韩欧美中文| 国产精品久久久久免费a∨| 日韩av中文字幕在线播放| 欧美日韩在线观看视频小说| 国产精品美女久久久免费| 亚洲精品国精品久久99热一| 在线观看日韩视频| 欧美一级在线亚洲天堂| 日本久久久久亚洲中字幕| 欧美影院成年免费版| 久久国内精品一国内精品| 国产一区二区三区直播精品电影| 欧美日韩色婷婷| 国产日韩欧美黄色| 韩曰欧美视频免费观看| 欧美日韩亚洲天堂| 日韩一区二区精品视频| 欧美成人精品h版在线观看| 欧美日韩国产一区二区三区| 97久久精品视频| 亚洲成人黄色网址| 国产在线精品自拍| 亚洲人成网站777色婷婷| 欧美大肥婆大肥bbbbb| 日产日韩在线亚洲欧美| 亚洲欧美日韩中文视频| 美女啪啪无遮挡免费久久网站| 亚洲专区在线视频| 亚洲欧洲一区二区三区久久| 国产精品自拍偷拍视频| 日本aⅴ大伊香蕉精品视频| 欧美精品aaa| 中文字幕不卡av| 成人亚洲激情网|