国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

abstract 和 interface 有什么區別

2019-11-08 19:29:46
字體:
來源:轉載
供稿:網友

抽象類(Abstract):聲明方法的存在而不去實現它的類被稱為抽象類(abstract)它用于要創建一個體現某些基

     本行為的類,并為該類聲明方法,但不能在該類中 實現該類的情況。不能創建 abstract 類的實例。然而

     可以創建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實例。不能有抽象構造函數或 抽      象 靜態方法。 Abstract 類的子類為它們父類中的所有抽象方法提供實現, 否則它們也是抽象類為。 取      而代 之,在子類中實現該方法。知道其行為的其它 類可以在類中實現這些方法。

              

接口( interface ):是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而

獲得。接口 中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義 static final 成員變量。接口

的實現與子類相似,除了該實現類不能從接口定義中繼承 行為。當類實現特殊接口時,它定義(即將程序

體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對象上調用接口的方法。由于有

抽象類,它 允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從

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的子類可以有選擇地實現。  這個選擇有兩點含義:    1):是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類必須實現。那些沒有abstract的方法,在Abstrct class中必須定義方法體。    2):是abstract class的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現,也可以通過再次聲明其方法為抽象的方式,無需實現,留給其子類來實現,但此類必須也聲明為抽象類。既是抽象類,當然也不能實例化。  E. abstract class是interface與Class的中介。  interface是完全抽象的,只能聲明方法,而且只能聲明pulic的方法,不能聲明PRivate及protected的方法,不能定義方法體,也 不能聲明實例變量。然而,interface卻可以聲明常量變量,并且在JDK中不難找出這種例子。但將常量變量放在interface中違背了其作為接 口的作用而存在的宗旨,也混淆了interface與類的不同價值。如果的確需要,可以將其放在相應的abstract class或Class中。  abstract class在interface及Class中起到了承上啟下的作用。一方面,abstract class是抽象的,可以聲明抽象方法,以規范子類必須實現的功能;另一方面,它又可以定義缺省的方法體,供子類直接使用或覆蓋。另外,它還可以定義自己 的實例變量,以供子類通過繼承來使用。接口類型轉換, instanceof 運算符可以用來決定某對象的 類是否實現了接口。

最重要的,也是經常在面試中問到的:

1.接口是可以繼承(extends)接口的。

2.抽象類也是可以實現(implements)接口的,但是抽象類不可以繼承(extends)接口

3.抽象類是否可以繼承(extends)實體類,是可以的但是前提是實體類必須要有明確的構造函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扬中市| 江油市| 江都市| 同心县| 黑山县| 长阳| 吐鲁番市| 潜山县| 行唐县| 饶平县| 塔河县| 南宫市| 海安县| 方正县| 灌南县| 金山区| 饶阳县| 武威市| 曲麻莱县| 扎兰屯市| 凤庆县| 方城县| 淮安市| 武隆县| 隆林| 象山县| 三原县| 汕尾市| 沧州市| 东乌| 赤壁市| 六枝特区| 克东县| 策勒县| 县级市| 宣汉县| 西乌| 巨鹿县| 通化县| 筠连县| 石狮市|