全都没有问题(二点五)
2023-12-20 12:37:44
java 接口默认方法冲突等问题 基础基础基础
子接口覆盖父接口的默认方法
package com.book;
interface AA{
public abstract void print();
public default void ID(){
System.out.println("AA");
}
}
interface BB extends AA{ //接口BB继承AA
@Override
public default void ID(){
System.out.println("BB");
}
}
public class Test3 implements AA,BB{
@Override
public void print(){
System.out.println("print - AA");
}
public static void main(String args[]){
Test3 t = new Test3();
t.print(); //print - AA
t.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
@Override
public 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{
@Override
public void print(){
System.out.println("print - AA");
}
public static void main(String args[]){
Test3 t = new Test3();
t.print(); //print - AA
t.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{
@Override
public void print(){
System.out.println("print - AA");
}
//需要覆盖,两种方式,自己写,或者委托其中一个父类,如AA
@Override
public void ID(){
AA.super.ID(); //委托AA
}
public static void main(String args[]){
Test3 t = new Test3();
t.print(); //print - AA
t.ID(); //AA
}
}
文章来源:https://blog.csdn.net/weixin_73185295/article/details/135104836
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!