接口中有默認方法實現
Java8容許咱們使用default關鍵字,爲接口聲明添加非抽象的方法實現。ide
public interface DefaultInterFace { int plus(int x, int y); default int mul(int x, int y) { return x*y; } default int mul2(int x, int y) { return x*x*y*y; } }
public class DefaultInterFaceImpl implements DefaultInterFace { @Override public int plus(int x, int y) { return x + y; } // @Override // public int mul(int x, int y) { // return x*x*y*y; // } }
public class DefaultInterFaceTest { @Test public void testDefaultInterFace() { DefaultInterFace defaultInterFace = new DefaultInterFaceImpl(); System.out.println(defaultInterFace.plus(5, 6)); System.out.println(defaultInterFace.mul(5, 6)); System.out.println(defaultInterFace.mul2(5, 6)); } }
Java8中接口和抽象類的比較
相同點:
都能定義方法和屬性(以前接口不能定義方法)。
抽象類和接口均可以不含有抽象方法。
抽象類和接口都不能建立對象。
繼承和實現接口或抽象類的子類必須實現接口或抽象類的全部的方法。spa
不一樣點:
屬性上,抽象類能夠用各類各樣的修飾符修飾。而接口的屬性是默認的public static final
抽象類中能夠含有靜態代碼塊和靜態方法,而接口不能含有靜態方法和靜態代碼塊。
抽象類能夠含有構造方法,接口不能含有構造方法。
抽象類表示的是IS-A的關係,接口則表示LIKE-A的關係。
接口只能繼承接口。而抽象類能夠繼承普通的類,也能繼承接口和抽象類。code