国产探花免费观看_亚洲丰满少妇自慰呻吟_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)實體類,是可以的但是前提是實體類必須要有明確的構造函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 略阳县| 麟游县| 永城市| 阿克苏市| 兰西县| 丽江市| 铁岭市| 阿鲁科尔沁旗| 岐山县| 尉犁县| 仙游县| 突泉县| 泰安市| 高台县| 建阳市| 铜鼓县| 德钦县| 广宁县| 武穴市| 宜阳县| 长宁区| 永吉县| 江永县| 农安县| 怀来县| 思南县| 郓城县| 陆丰市| 大新县| 安阳县| 泸西县| 兰西县| 东平县| 秦皇岛市| 太仓市| 班玛县| 凤阳县| 商南县| 赤城县| 凤山县| 武安市|