本文主要是介绍全都没有问题(二点五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
java 接口默认方法冲突等问题 基础基础基础
子接口覆盖父接口的默认方法
package com.book;interface AA{public abstract void print();public default void ID(){System.out.println("AA");}
}
interface BB extends AA{ //接口BB继承AA@Overridepublic default void ID(){System.out.println("BB");}
}public class Test3 implements AA,BB{@Overridepublic void print(){System.out.println("print - AA");}public static void main(String args[]){Test3 t = new Test3();t.print(); //print - AAt.ID(); //BB 子接口覆盖了父接口的默认方法,可以加上@Override}
}
类优先原则
package com.book;interface AA{public abstract void print();public default void ID(){System.out.println("AA");}
}
interface BB extends AA{ //接口BB继承AA@Overridepublic default void ID(){System.out.println("BB");}
}class CC{public void ID(){System.out.println("CC"); //类中的ID方法}
}public class Test3 extends CC implements AA,BB{@Overridepublic void print(){System.out.println("print - AA");}public static void main(String args[]){Test3 t = new Test3();t.print(); //print - AAt.ID(); //CC 类优先}
}
委托接口
package com.book;interface AA{public abstract void print();public default void ID(){ //AA的默认方法System.out.println("AA");}
}
interface BB{public default void ID(){System.out.println("BB"); //BB也有默认方法}
}public class Test3 implements AA,BB{@Overridepublic void print(){System.out.println("print - AA");}//需要覆盖,两种方式,自己写,或者委托其中一个父类,如AA@Overridepublic void ID(){AA.super.ID(); //委托AA}public static void main(String args[]){Test3 t = new Test3();t.print(); //print - AAt.ID(); //AA}
}
这篇关于全都没有问题(二点五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!