今天開始學java(十四):抽象類、接口、接口的抽象方法

先來一個接口的懶人方法總結

在java9+版本中,接口的內容可以有:
1、成員變量其實是常亮,格式:
public static final 數據類型 常量名稱 = 數據值;
注意:
常亮必須進行賦值,而且一旦賦值不能改變。
常亮名稱完全大寫,用下劃線進行分割

2、接口中最重要的就是抽象方法,格式:
public abstract 返回值類型 方法名稱(參數列表);
注意:實現類必須覆蓋重寫接口所有的抽象方法,除非實現類是抽象類。

3、從java8開始,接口裏允許定義默認方法,格式:
public default 返回值類型 方法名稱(參數列表);{方法體}
注意:默認方法也可以被覆蓋重寫

4、從java8開始,接口裏允許定義靜態方法,格式:
public static 返回值類型 方法名稱(參數列表) {方法體}
注意:應該通過接口名稱進行調用,不能通過實現類對象調用接口靜態方法

5、從java9開始,接口允許定義私有方法,格式:
普通私有方法:private 返回值類型 方法名稱(參數列表) {方法體}
靜態私有方法:private static 返回值類型 方法名稱(參數列表) {方法體}
注意:private的方法只有接口自己才能調用,不能被實現類或其他人使用
抽象類:抽象方法所在的類,必須是抽象類才行,在class之前寫上abstract即可。public abstract class 抽象類名{}
抽象方法:就是加上abstract關鍵字,去掉大括號,直接分號結束。public abstract void 抽象方法名();
之後創建一個子類繼承這個抽象類,再重新覆寫抽象方法即可。

抽象類

如何使用抽象類和抽象方法:
1、不能直接創建new抽象類對象。
2、必須用一個子類來繼承抽象類
3、子類必須覆蓋重寫抽象父類當中所有的抽象方法。
覆蓋重寫(實現),子類去掉抽象方法中的abstract關鍵字,然後不上方法體大括號。
4、創建子類對象進行使用

注意事項:
1、抽象類不能創建對象,如果創建,編譯無法通過而報錯,只能創建其非抽象子類的對象
2、抽象類中,可以有構造方法,是供子類創建對象時,初始化父類成員使用的,可以理解成子類的構造方法中有默認的super(),需要訪問父類構造方法
3、抽象類中不一定包含抽象方法,但是又抽象方法的類必定時抽象類。
4、抽象類的子類,必須重寫抽象父類中所有的抽象方法,否則編譯無法通過,除非該子類也是抽象類

接口

接口就是多個類的公共規範。
接口是一種引用數據類型,最重要的內容就是其中的抽象方法

如何定義一個接口的格式:

public interface 接口名稱{
//接口內容
}

備註:換成了關鍵字interface之後,編譯生成的字節碼文件仍然是.java—>.class
接口使用步驟:
1、接口不能直接使用,必須有一個實現類來實現該接口。
格式:

public class 實現類名稱 implements 接口名稱{
	//...
}

2、接口的實現類必須覆蓋重寫(實現)接口中的所有抽象方法。
實現:去掉abstract關鍵字,加上方法體大括號。
3、創建實現類的對象,進行使用。

注意事項:如果實現類並沒有覆蓋重寫接口中所有的抽象方法,那麼這個實現類自己就必須是抽象類。

從java8開始,接口裏允許定義默認方法和靜態方法

默認方法
格式:public default 返回值類型  方法名稱(參數列表){
//方法體
}

備註:接口當中的默認方法,可以解決接口升級的問題(比如說你接口類多了一個方法,不能所有的抽象類都去改吧,如果不想去所有出問題的類去修改代碼,就需要在接口定義默認方法)
1、接口的默認方法可以通過接口的實現類對象,直接調用
2、接口的默認方法也可以被接口實現類進行覆蓋重寫。

靜態方法

格式:

public static 返回值類型 方法名稱(參數列表){
	//方法體
}

就是將abstract或者default換成static即可,帶上方法體
通過接口名稱,直接調用其中的靜態方法
格式:
接口名稱.靜態方法名(參數);
注意:不能通過接口實現類的對象來調用接口當中的靜態方法

接口中的私有方法

從java9開始,接口當中允許定義私有方法
1、普通私有方法:解決多個默認方法之間重複代碼問題
格式:

private 返回值類型 方法名稱(參數列表){
方法體
}

2、靜態私有方法:解決多個靜態方法之間重複代碼問題
格式:

private static 返回值類型 方法名稱(參數列表){
方法體
}
接口中常量的定義以及使用

接口當中也可以定義“成員變量”,但是必須用public static final三個關鍵字進行修飾
從效果上看,這其實就是接口的【常量】
格式:
public static final 數據類型 常量名稱 = 數據值;
注意:一旦使用final關鍵字進行修飾,說明不可改變

接口當中的常量,可以省略public static final,剛開始學習不推薦省略
接口當中的常量必須進行賦值,不能不復制
接口中常量的名稱推薦使用全部大寫字母,並且使用下劃線分割

public interface MyInterfaceConst {
    //這其實就是一個常量,一旦賦值,不能修改
    public static final int NUM_OF_MY_CLASS= 10;
}
發佈了77 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章