java 類、接口基礎知識

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

  • 上面說的是類的方法屬性做用域,default是類屬性的默認修飾符。
  • 接口的屬性和方法只有public 和default 修飾詞。而接口的默認屬性是默認是public static final ,方法是public abstract。
  • 新建類的修飾符只有public和默認不選(表示同包可訪問),在內部類中能夠有其餘修飾符

override 和 overloadui

  • override 重寫,表示子類重寫了父類的方法code

    • 方法名、參數、返回值相同
    • 子類方法不能縮小父類的訪問權限
    • 子類方法不能拋出比父類方法更多的異常,但能夠不拋出異常
    • 方法被定義成final,static 不能被重寫
  • 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

相關文章
相關標籤/搜索