Java中 private、protected、public和default的區別java
做用域 | 當前類 | 同一包類 | 子孫類 | 其餘包 |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
相似於倒三角形的樣子 注意ide
override 和 overloadui
override 重寫,表示子類重寫了父類的方法code
overload 重載 一個類定義多個同名的方法接口
注意:static方法 官網推薦是直接用類名調用。作用域
接口 interfaceget
在Java8 中接口也能夠定義默認方法與靜態方法io
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() ); } }
==>執行結果 Default implementation Overridden implementationtable