java8的接口新增了默认方法的功能,这样使得接口的功能跟抽象类更为接近,不过却导致了一个菱形继承问题。
interface top{ default int face(){ return 1; } } interface middle1 extends top{ @Override default int face(){ return 0; } } interface middle2 extends top{ @Override default int face(){ return 2; } } class bottom implements middle1,middle2{ @Override public int face() { return 0; } }
以上就是菱形继承问题。bottom继承middle1和middle2,会出现必须要重写face方法的情况,否则编译报错。 如果middle1或middle2删掉对face的重写,则bottom不必重写face