在閱讀Collection源碼時,發現Collection接口繼承了接口Iterable,Iterable內部有兩特別的個方法:
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
發現接口Iterable內部由具體的函數實現,被default關鍵字修飾,查閱資料得知,default是Java1.8的新特性,接口內不可以實現具體的函數,前提是使用default修飾,因此在實現使用了default修飾方法的接口的時候,可以重寫接口default,可以默認使用父類方法,具有多態性。