jdk1 8對介面的改進

2021-10-18 07:56:14 字數 956 閱讀 2611

在jdk1.8的特性中,具有最大變化的就是介面

理解:假設乙個父介面被超級多子類繼承,並且子類還會被子類的子類繼承……,當父介面需要新增乙個方法時,因為該方法一定會在超多個子類中被覆寫的,所以工作量難以想象。從jdk1.8開始,專門提供了兩類新的結構:

1、 可以使用default來定義普通方法,普通方法通過物件呼叫;

**示例:

inte***ce

inew

public

void

print()

;//抽象方法

}class

person

implements

inew

}public

class

testdemo

}

執行結果:

hello!

world!

2、 可以使用static來定義靜態方法,通過介面名就可以呼叫。

**示例:

inte***ce

inew

public

static inew getinstance()

public

void

print()

;//抽象方法

}class

person

implements

inew

}public

class

testdemo

}

執行結果:

hello!

world!

從以上的**可以看出,介面更像抽象類了,但是它更強大,因為介面的子類依然可以實現多繼承的關係。但是抽象類只能單繼承。(但是實際開發中介面定義的增強特性應用的不多)

jdk1 8對HashMap的改進

1,jdk1.7底層採用entry陣列 鍊錶的資料結構,而1.8採用node陣列 鍊錶 紅黑樹的資料結構。2,jdk1.7的hashmap插入新值時使用頭插法,1.8使用尾插法。使用頭插法比較快,但在多執行緒擴容時會引起倒序和閉環的問題。所以1.8就採用了尾插法。3,擴容後新錶中的索引位置計算方式不...

JDK1 8之後,介面的語法有改動

增加了兩類成員 1 靜態方法 public static,static不可以省略的 通過 介面名.方法 來進行呼叫 介面的靜態方法不會繼承到實現類中,不能用介面的實現類物件呼叫,只能用介面名呼叫。為什麼這麼設計呢?因為原來的api中,往往會設計為這樣 1 集合類的介面 collection 集合的工...

JDK1 8 函式式介面

前言 公司專案中大量使用了該新特性,故對此進行學習總結 consumer消費型介面 之所以叫做消費型按照我的理解 消費 邏輯處理 傳入的資料 抽象方法 void accept t t 接收乙個引數進行消費,但無需返回結果。介面.accept x 意思就是將x的引數,帶入到介面裡去執行 預設方法 an...