Demo01Interface
package InterfaceandExtend;
public class Demo01Interface {
public static void main(String[] args) {
MyInterfaceABImpl myInterfaceAB = new MyInterfaceABImpl();
myInterfaceAB.methodA();
myInterfaceAB.methodB();
myInterfaceAB.methodAbs();//重写一次即可
myInterfaceAB.methodDefault();
}
}
MyInterfaceA.java
package InterfaceandExtend;
public interface MyInterfaceA {
public abstract void methodA();
public abstract void methodAbs();
public default void methodDefault() {
System.out.println("接口A中的默认方法");
}
}
MyInterfaceB.java
package InterfaceandExtend;
public interface MyInterfaceB {
public abstract void methodB();
public abstract void methodAbs();
//public abstract void methodElse();
public default void methodDefault(){
System.out.println("接口B中默认方法");
}
}
MyInterfaceABImpl.java
package InterfaceandExtend;
public class MyInterfaceABImpl implements MyInterfaceA,MyInterfaceB{
@Override
public void methodA() {
System.out.println("重写A");
}
@Override
public void methodAbs() {
System.out.println("重写Abs");
}
@Override
public void methodB() {
System.out.println("重写B");
}
@Override
public void methodDefault() {
MyInterfaceA.super.methodDefault();
//两个中都有,只需要覆盖重写一个,必须要,不然不知道听哪个的话
System.out.println("对多个接口当中冲突的默认方法进行了覆盖重写");
}
}
对于第六条:
一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方
Fu.java
package InterfaceandExtend.FuZiInterface;
public class Fu {
public void method(){
System.out.println("父类的方法");
}
}
Zi.java
package InterfaceandExtend.FuZiInterface;
public class Zi extends Fu implements MyInterface{
}
MyInterface.java
package InterfaceandExtend.FuZiInterface;
public interface MyInterface {
public default void method(){
System.out.println("接口的默认方法");
}
}
Zi.java
package InterfaceandExtend.FuZiInterface;
public class main {
public static void main(String[] args) {
Zi zi = new Zi();
zi.method();
}
}
//输出结果
//父类的方法



