Java父类和接口中存在重名方法,运行子类时调用方法的优先级

在JDK8下,当子类ASon继承父类AFather并实现接口AInterface,且接口与父类存在同名方法时,子类未重写这些方法。即使接口中有abstract、default、static修饰的方法,运行时仍优先调用父类中的方法。这体现了Java的动态绑定机制,即调用对象方法时优先考虑运行类型。
摘要由CSDN通过智能技术生成

JDK8版本,接口中允许有以下三种方法:

  • abstract修饰的抽象方法:public abstract 返回类型 方法名(参数);
  • default修饰的默认方法:public default 返回类型 方法名(参数) {方法体};
  • static修饰的静态方法:public static 返回类型 方法名(参数) {方法体};

下面开始正文,JDK8版本下,子类ASon继承父类AFather并实现接口AInterface时,如果存在同名方法,而子类中并没有重写方法,那么优先级会是如何?

首先,父类AFather定义如下,全文不作任何修改:

class AFather {
   
    public void TestMethod() {
   
        System.out.println("父类方法被执行");
    }
}

1. 接口中是abstract方法

接口定义如下:

interface AInterface {
   
    public abstract void TestMethod()
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值