当前位置: 首页 > news >正文

为什么可以不重写m1方法

在 Java 中,当一个类继承另一个类并同时实现接口时,如果接口中的方法签名与父类中的方法签名完全相同(包括方法名、参数列表和返回类型),那么父类的方法会自动满足接口的实现要求,子类无需显式重写该方法。这种机制称为方法签名的兼容性,具体原因如下:

1. 方法签名的匹配

在你的例子中:

  • 接口 B 定义了方法 void m1()
  • 类 A 实现了方法 public void m1()

这两个方法的签名完全一致(方法名、参数列表、返回类型)。因此,当类 C 继承 A 并实现 B 时,A 中的 m1 方法会被视为满足 B 接口的实现,无需在 C 中显式重写

2. Java 编译器的处理逻辑

当编译器检查类 C 是否正确实现了接口 B 时:

  • 编译器会检查 C 是否包含 m1() 和 m2() 方法的实现。
  • 由于 C 继承自 A,而 A 中已有 m1() 方法,编译器认为接口 B 的 m1() 方法已被实现。
  • 因此,编译器不会强制要求 C 显式重写 m1(),只需实现 m2() 即可。

3. 示例验证

以下代码展示了这种机制的效果:

class A {public void m1() {System.out.println("A类的m1方法");}
}interface B {void m1(); // 方法签名与A类的m1()完全一致void m2();
}class C extends A implements B {@Overridepublic void m2() {System.out.println("C类实现的m2方法");}
}public class Main {public static void main(String[] args) {C c = new C();B b = c; // C类对象可赋值给B接口引用c.m1(); // 输出:A类的m1方法b.m1(); // 同样输出:A类的m1方法,证明接口方法已被A类实现}
}

输出结果

4. 注意事项

  • 方法签名必须严格一致:如果接口和父类的方法签名有任何不同(如参数类型、返回类型),则编译器会要求子类显式重写该方法。
  • 访问权限不能更严格:父类方法的访问修饰符必须至少与接口方法相同或更宽松(例如,接口方法是 public,则父类方法也必须是 public)。

总结

这种机制允许你在不修改原有类的情况下,通过继承和接口实现将现有功能适配到新的接口中,是适配器模式的一种常见实现方式。通过这种方式,你可以将父类的行为接口的契约无缝结合,实现功能的复用和扩展。

http://www.xdnf.cn/news/573499.html

相关文章:

  • Multi-Query Attention:传统自注意力( Self-Attention)优化显存和加速方案
  • IP核警告,Bus Interface ‘AD_clk‘: ASSOCIATED_BUSIF bus parameter is missing.
  • python生成requirements.txt文件
  • ABC 353
  • ROS2 CV_bridge与opencv版本冲突
  • 学习 Pinia 状态管理【Plan - May - Week 2】
  • 创建一个element plus项目
  • [C++入门]类和对象下
  • 东莞一锂离子电池公司IPO终止,客户与供应商重叠,社保缴纳情况引疑
  • GitLab 配置 webhook
  • 越小越优先和越大越优先
  • oracle使用SPM控制执行计划
  • 使用Redis的Bitmap实现了签到功能
  • iPaaS集成平台技术选型关注哪些指标?
  • HJ20 密码验证合格程序【牛客网】
  • 测试W5500的第4步_使用ioLibrary库创建UDP客户端和服务器端
  • 数据结构核心知识总结:从基础到应用
  • 6-码蹄集600题基础python篇
  • Mysql数据库相关命令及操作
  • 链表-两两交换链表中的节点
  • Mysql差异备份与恢复
  • Python图像处理全攻略:从基础到前沿技术深度剖析
  • 极大似然估计与机器学习
  • python查询elasticsearch 获取指定字段的值的list
  • 操作系统期末复习(一)
  • 淘宝扭蛋机小程序开发:开启电商娱乐新玩法
  • 工程项目交付质量低?如何构建标准化管理体系?
  • C++网络编程入门学习(四)-- GDB 调试 学习 笔记
  • 第9.1讲、Tiny Encoder Transformer:极简文本分类与注意力可视化实战
  • 计算机操作系统(十)调度的概念与层次,进程调度的时机与进程的调度方式