java 抽象接口的作用_java接口和抽象類的區別和作用(功能、用途、好處)

Java接口:

總結了4點關於JAVA中接口存在的意義:

1、重要性:在Java語言中, abstract class 和interface 是支持抽象類定義的兩種機制。正是由於這兩種機制的存在,才賦予了Java強大的 面向對象能力。

2、簡單、規范性:如果一個項目比較龐大,那么就需要一個能理清所有業務的架構師來定義一些主要的接口,這些接口不僅告訴開發人員你需要實現那些業務,而且也將命名規范限制住了(防止一些開發人員隨便命名導致別的程序員無法看明白)。

3、維護、拓展性:比如你要做一個畫板程序,其中里面有一個面板類,主要負責繪畫功能,然后你就這樣定義了這個類。

可是在不久將來,你突然發現這個類滿足不了你了,然后你又要重新設計這個類,更糟糕是你可能要放棄這個類,那么其他地方可能有引用他,這樣修改起來很麻煩。

如果你一開始定義一個接口,把繪制功能放在接口里,然后定義類時實現這個接口,然后你只要用這個接口去引用實現它的類就行了,以后要換的話只不過是引用另一個類而已,這樣就達到維護、拓展的方便性。

4、安全、嚴密性:接口是實現軟件松耦合的重要手段,它描敘了系統對外的所有服務,而不涉及任何具體的實現細節。這樣就比較安全、嚴密一些(一般軟件服務商考慮的比較多)。

那么什么是接口呢?

接口是一種能力

1:接口的命名規則與類型不同。如果修飾符是public。則該接口在整個項目中可見 ,如果省略修飾符 則該接口只能在該包可見

2:接口中可以定義常量,不能定義變量,接口中的屬性都會自動用public static final修飾,即接口中的屬性都是全局靜態常量,接口中的常量必須在定義時指定初始值

3:接口中所有的方法抽象方法。接口中的方法都會自動用public abstract修飾。即接口中只有全局抽象方法,

4:和抽象類一樣,接口不能被實例化,接口中不能有狗構造方法

5:接口之間可以通過extends 實現繼承關系,一個接口可以繼承多個接口。但接口不能繼承類

6:接口的實現類必須實現接口的全部方法,否則必須定義為抽象類

7:一個類只能有一個直接父類,但可以通過implements實現多個接口,當雷在繼承父類的同時有實現了多個接口時,extends關鍵字必須位於implements關鍵字之前

接口的注意事項:

01.接口不能實例化,因為接口是比抽象類抽象程度更高的類型

02一個類如果實現了某個接口,必須重寫該接口中的所有方法

03.接口不能有構造,但是抽象類可以有

04.接口中所有方法都公有的抽象方法

05.接口中的所有字段必須都是公有的靜態常量

06.接口本身也是一種數據類型

07.接口只是為實現它的類定義了規范,保證實現類方法簽名和接口中對應方法一致。

08.通過接口可以實現多繼承

09.一個借口中最好只定義一個方法,防止接口污染

java中接口的特點:

1. 接口中的方法,永遠都被public來修飾

2. 接口中沒有構造方法,也不能實例化接口對象

3. 接口中只有方法的聲明,沒有方法體

4. 接口中只有常量,如果定義變量,在編譯的時候都會默認加上“public static final”

5. 接口中定義的方法都需要實現類來實現,如果實現類不能實現接口中的所有方法,則實現類需要定義為抽象類

6. 靜態方法不能被子類重寫(覆蓋),因此接口中不定聲明靜態方法

7. 使用接口可以實現多繼承

抽象類:

抽象類就是不能使用new方法進行實例化的類(不能被實例化,可以有多個抽象方法),即沒有具體實例對象的類,抽象類有點類似於“模板”的作用,目的是根據其格式來創建和修改新的類,對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象,當一個類被聲明為抽象類時,要在這個類前面加上修飾符abstract,在抽象類中的成員方法可以包括一般方法和抽象方法

抽象類的關鍵字:abstract

abstract 關鍵字,和哪些關鍵字不能共存?

final:被final修飾的類不能有子類。而被abstract修飾的類一定是一個父類。

private: 抽象類中的私有的抽象方法,不被子類所知,就無法被復寫。

而抽象方法出現的就是需要被復寫。

static:如果static可以修飾抽象方法,那么連對象都省了,直接類名調用就可以了

java中抽象類的特點:

1. 如果一個類中有抽象方法,那么這個類一定是抽象類

2. 抽象類中不一定有抽象方法

3. 抽象類中可以存在抽象方法

4. 抽象類中可以存在構造方法

5. 抽象類中可以存在普通屬性、方法、靜態屬性和靜態方法

6. 抽象類中的抽象方法需要有子類實現,如果子類不實現,則子類也需要定義為抽象的

7,抽象方法和抽象類都必須被abstract關鍵字修飾。

8,抽象類不可以用new創建對象。因為調用抽象方法沒意義

9:抽象類中的抽象方法要被使用,必須由子類復寫起所有的抽象方法

接口和抽象類的區別之處:

1. 接口中所有的方法隱含都是抽象的,而抽象類則可以同時包含抽象和非抽象的方法

2. 類可以實現很多個接口,但是只能繼承一個抽象類

3. 類可以不實現抽象類和接口聲明的所有方法,在這種情況下,類也必須得聲明成是抽象的

4. 抽象類可以在不提供接口方法實現的情況下實現接口

5. java接口中聲明的變量默認都是final的,抽象類可以包含非final變量

6. java接口中的成員函數默認都是public的,抽象類中的成員函數可以是private,protected或者是public的

7. 接口是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是如果它包含main方法的話是可以被調用的

8:抽象類中可以有普通方法,接口中不能。

9:抽象類可以有構造,接口不能

10:抽象類中可以有普通字段,而接口中不行

11:抽象類不能實現多繼承,接口可以

12:符合isa關系的選用抽象類,符合hasa關系的選用接口比抽象類抽象程度更高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值