首页 > 编程语言 > 详细

java 接口default的判断规则

时间:2019-12-24 00:34:27      阅读:77      评论:0      收藏:0      [点我收藏+]

1.前言

jdk1.8中新增加了default关键字,就是在接口中可以增加默认实现.

因为改动接口所有的实现类都要改动,所以增加了default关键字后不需要修改其他类,默认给所有实现类增加了方法.

2.冲突

一个类实现了两个接口,这两个接口都有默认的default关键字,那么程序会先执行哪一个呢?

public interface A {
    default void hello() {
        System.out.println("Hello from A");
    }
}
public interface B extends A{
    default void hello() {
        System.out.println("Hello from B");
    }
}    
public class C implements B,A{
    
    public static void main(String[] args) {
        new C().hello();//Hello from B
    }
}

答案是先执行B

因为这里有三个规则

1.类中的方法优先级最高. 类或者父类声明的方法的优先级高于任何声明为默认方法的优先级.

2.子接口优先级最高.

3.   1  2  无法判断的情况下,只能显示覆盖.

 

因为这里B继承了A,所以B的优先级比A高.

java 接口default的判断规则

原文:https://www.cnblogs.com/lishuaiqi/p/12088943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!