编程语言
首页 > 编程语言> > 【Java SE】默认方法冲突

【Java SE】默认方法冲突

作者:互联网

 

interface Named {
    default void getName() {
        System.out.println("named");
    }
}
interface Show {
    default void getName() {
        System.out.println("show");
    }
}
class Person {
    public void getName() {
        System.out.println("person");
    }
}

规则

1、超类优先

超类和接口的默认方法同名且参数相同时,超类方法会覆盖接口的默认方法。

class Student extends Person implements Named, Show {
}
Person超类的getName方法覆盖了接口Named、Show的getName方法

2、接口冲突

实现的两个接口具有同名且参数类型相同的方法,必须通过覆盖方法来解决冲突。

class Student implements Named, Show {
    public void getName() {
        System.out.println("student");
    }
}
必须自己实现getName方法解决冲突

 

标签:Named,Java,getName,System,默认,超类,void,SE,out
来源: https://www.cnblogs.com/yangchongxing/p/16098717.html