接口中有默认方法实现
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