JAVA學習筆記(3)—— 抽象類與接口

1. Java 抽象類

在面向對象的概念中,全部的對象都是經過類來描繪的,可是反過來,並非全部的類都是用來描繪對象的,若是一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。java

抽象類除了不能實例化對象以外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類同樣。編程

因爲抽象類不能實例化對象,因此抽象類必須被繼承,才能被使用。也是由於這個緣由,一般在設計階段決定要不要設計抽象類。編程語言

父類包含了子類集合的常見的方法,可是因爲父類自己是抽象的,因此不能使用這些方法。設計

在Java中抽象類表示的是一種繼承關係,一個類只能繼承一個抽象類,而一個類卻能夠實現多個接口。指針

2. Java 接口

(1)定義對象

接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口一般以interface來聲明。一個類經過繼承接口的方式,從而來繼承接口的抽象方法。繼承

接口並非類,編寫接口的方式和類很類似,可是它們屬於不一樣的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。接口

除非實現接口的類是抽象類,不然該類要定義接口中的全部方法。編譯

接口沒法被實例化,可是能夠被實現。一個實現接口的類,必須實現接口內所描述的全部方法,不然就必須聲明爲抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們能夠成爲一個空指針,或是被綁定在一個以此接口實現的對象。class

[可見度] interface 接口名稱 [extends 其餘的類名] {

        // 聲明變量

        // 抽象方法

}

(2)接口與類類似點:

–   一個接口能夠有多個方法。

–   接口文件保存在 .java 結尾的文件中,文件名使用接口名。

–   接口的字節碼文件保存在 .class 結尾的文件中。

–   接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。

(3)接口與類的區別:

–   接口不能用於實例化對象。

–   接口沒有構造方法。

–   接口中全部的方法必須是抽象方法。

–   接口不能包含成員變量,除了 static 和 final 變量。

–   接口不是被類繼承了,而是要被類實現。

–   接口支持多繼承。

(4)接口特性

接口中每個方法也是隱式抽象的,接口中的方法會被隱式的指定爲 public abstract(只能是 public abstract,其餘修飾符都會報錯)。

接口中能夠含有變量,可是接口中的變量會被隱式的指定爲 public static final 變量(而且只能是 public,用 private 修飾會報編譯錯誤)。

接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

3. 抽象類與接口相同點

(1)都不能被實例化

(2)接口的實現類或抽象類的子類都只有實現了接口或抽象類中的方法後才能被實例化

4. 抽象類與接口不一樣點

(1)接口只有定義,不能有方法的實現;而抽象類能夠有定義與實現

(2)接口關鍵字爲implements,繼承抽象類的關鍵字爲extends;一個類實現多個接口,一個類只能繼承一個抽象類

(3)接口強調特定功能的實現,抽象類強調所屬關係

(4)接口定義變量默認爲public、static、final,只能有靜態的不被修改的數據成員,必須賦初值,全部成員方法都是public、abstract的,只能被這關鍵字修飾;抽象類能夠有本身的數據成員變量,也可有非抽象成員方法,抽象類成員變量默認爲default,也能夠被private、protected、public,可在子類從新定義與賦值,抽象類抽象方法不能被private、static、synchronized和native修飾,方法必須以分好結尾,不帶花括號。

(5)接口被用於實現經常使用功能,,方便維護;抽象類傾向於充當公共類,不便修改

相關文章
相關標籤/搜索