全都没有问题(二点五)

发布时间:2023年12月20日

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。