在Java8之前,接口中只允许定义方法,而不能实现方法,接口中的方法必须在非抽象子类中进行实现。
public interface InterfaceDemo { void add(); void sub(); }
public class InterfaceDemoImpl implements InterfaceDemo { @Override public void add() { // do sth. } @Override public void sub() { // do sth. } }
Java8的接口方法形式:
public interface InterfaceDemo { int add(); int sub(); // Java8 default void result() { System.out.println(add() + sub()); } }
public class InterfaceDemoImpl implements InterfaceDemo { @Override public int add() { // do sth. return 1; } @Override public int sub() { // do sth. return 2; } }
结果输出:
3
在Java8中,接口可以有默认方法的实现,改变了之前的语法,对接口进行了扩展,没有改变接口实现类。
思考:在Java8之前,上面的使用场景需使用抽象类和抽象类的实现类才能完成,现在可以使用Java8接口来完成,是不是以后版本的接口会逐渐替代抽象类?