【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方法解决冲突

 

posted @   翠微  阅读(36)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2019-04-04 【IntelliJ Idea】常用快捷键
2019-04-04 【consul】使用学习
点击右上角即可分享
微信分享提示