为什么Java中一个类可以实现多个接口,但只能继承一个类?

多继承会产生钻石问题(菱形继承)

  • 类 B 和类 C 继承自类 A,且都重写了类 A 中的同一个方法
  • 类 D 同时继承了类 B 和类 C
  • 对于类 B、C 重写的类 A 中的方法,类 D 会继承哪一个?这里就会产生歧义
  • 考虑到这种二义性问题,Java 不支持多重继承

Java 支持类实现多接口

  • 接口中的方法是抽象的,一个类实现可以多个接口
  • 假设这些接口中存在相同方法(方法名与参数相同),在实现接口时,这个方法需要实现类来实现,并不会出现二义性的问题

从 JDK1.8 开始,接口中允许有静态方法和方法默认实现。当检测到实现类中实现的多个接口中有相同的默认已实现的方法,编译报错

PS:在JDK 1.5 上实践,接口可以多继承接口

package constxiong.interview;/** * 测试继承多接口,实现相同方法 * 从 JDK1.8 开始,接口中允许有静态方法和方法默认实现 * 当检测到实现类中实现的多个接口中有相同的默认已实现的方法,编译报错 * @author ConstXiong * @date 2019-11-21 10:58:33 */public class TestImplementsMulitInterface implements InterfaceA, InterfaceB {public void hello() {System.out.println("hello");}}interface InterfaceA {void hello();static void sayHello() {System.out.println("InterfaceA static: say hello");}default void sayBye() {System.out.println("InterfaceA default: say bye");}}interface InterfaceB {void hello();static void sayHello() {System.out.println("InterfaceB static: say hello");}//default void sayBye() {//System.out.println("InterfaceB default: say bye");//}}

给TA打赏
共{{data.count}}人
人已打赏
Java

简单工厂和抽象工厂有什么区别?

2020-7-31 2:26:40

Java

什么是UML?

2020-7-31 2:30:00

本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
⚠️
本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索