6.1.2 介面不是類,不能實例化一個介面;但是可以聲明介面的變數;Comparable x; 介面變數必須引用實現了介面的類對象;x = new Employee(); 檢查一個對象是否屬於某個特定類(instanceof); 檢查一個對象是否屬於某個特定的介面(instance);if (anO ...
6.1.2 介面不是類,不能實例化一個介面;但是可以聲明介面的變數;Comparable x; 介面變數必須引用實現了介面的類對象;x = new Employee();
檢查一個對象是否屬於某個特定類(instanceof);
檢查一個對象是否屬於某個特定的介面(instance);if (anObject instanceof Comparable){...}
6.1.3 介面與抽象類
抽象類只能擴展一個類(單一繼承);
6.1.4 靜態方法
由一個字元串序列構造一個文件或目錄的途徑,如Paths.get("jdk1.8.0","jre","bin")
public interface Path
{
public static Path get (String first...more)
{
return FileSystems.getDefault().getPath(first, more);
}
...
}
6.1.5 預設方法
可以為介面方法提供一個預設實現。
public interface Comparable<T>{
default int comparableTo(T other ){return o;}
}
6.1.6 解決預設方法衝突
如果先在一個介面中將一個方法定義為預設方法,然後又在超類或者另一個介面中定義了同樣的方法,?
1)超類優先。如果超類提供了一個具體的方法,同名而且有相同的參數類型的預設方法會被忽略。
2)介面衝突。如果一個超介面提供了一個預設方法,另一個介面提供了一個同名而且參數類型相同的方法,必須覆蓋這個方法來解決衝突。