Java中 private、protected、public和default的區(qū)別
| 作用域 | 當前類 | 同一包類 | 子孫類 | 其他包 |
|---|---|---|---|---|
| public | Y | Y | Y | Y |
| protected | Y | Y | Y | N |
| default | Y | Y | N | N |
| private | Y | N | N | N |
類似于倒三角形的樣子
注意
- 上面說的是類的方法屬性作用域,default是類屬性的默認修飾符。
- 接口的屬性和方法只有public 和default 修飾詞。而接口的默認屬性是默認是public static final ,方法是public abstract。
- 新建類的修飾符只有public和默認不選(表示同包可訪問),在內(nèi)部類中可以有其他修飾符
override 和 overload
-
override 重寫,表示子類重寫了父類的方法
- 方法名、參數(shù)、返回值相同
- 子類方法不能縮小父類的訪問權(quán)限
- 子類方法不能拋出比父類方法更多的異常,但可以不拋出異常
- 方法被定義成final,static 不能被重寫
-
overload 重載 一個類定義多個同名的方法
- 參數(shù)類型,個數(shù)不對應
- 不能通過訪問權(quán)限、返回類型、拋出的異常進行重載
注意:static方法 官網(wǎng)推薦是直接用類名調(diào)用。
接口 interface
在Java8 中接口也可以定義默認方法與靜態(tài)方法
import java.util.function.Supplier;
public class testInterfaceMethodes {
private interface Defaulable {
// Interfaces now allow default methods, the implementer may or
// may not implement (override) them.
default String notRequired() {
return "Default implementation";
}
}
private static class DefaultableImpl implements Defaulable {
}
private static class OverridableImpl implements Defaulable {
@Override
public String notRequired() {
return "Overridden implementation";
}
}
private interface DefaulableFactory {
// Interfaces now allow static methods
public static Defaulable create( Supplier< Defaulable > supplier ) {
return supplier.get();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Defaulable defaulable = DefaulableFactory.create( DefaultableImpl::new );
System.out.println( defaulable.notRequired() );
defaulable = DefaulableFactory.create( OverridableImpl::new );
System.out.println( defaulable.notRequired() );
}
}
==>執(zhí)行結(jié)果
Default implementation
Overridden implementation
上一篇文章 java 基礎知識總結(jié)
如有什么不對的地方,歡迎大家指出來,我們共同學習??!
接下來會寫關(guān)于集合類相關(guān)的文章,謝謝大家關(guān)注