Java报错High类构造方法无法匹配给定参数,该错误的产生原因是什么?
报错原因分析
这个报错是Java继承场景下构造方法调用规则不满足导致的,具体原因如下:
- Java子类构造方法执行前,默认会隐式调用父类的无参构造方法
super(),该调用会被编译器自动插入到子类构造方法的第一行。 - 当父类
High显式定义了接收String类型参数的构造方法后,Java不会再为High类自动生成默认的无参构造方法。 - 你写的子类
Main的构造方法没有显式调用父类的有参构造,编译器自动插入的super()无参调用找不到匹配的父类构造方法,就会抛出该错误,提示High类的构造方法和传入的参数类型不匹配。
修复方案
有两种常见的修复方式,任选一种即可:
- 方案1:在子类构造方法的第一行,显式调用父类的有参构造方法,传入所需参数:
public Main(String s) { super(s); // 必须放在构造方法第一行 System.out.print("From Low"); }
- 方案2:为父类
High额外定义一个无参构造方法:
class High { // 新增无参构造 public High() { } public High(String s) { System.out.print("From High"); } }
内容的提问来源于stack exchange,提问作者Madhura Ravi
相关产品推荐
相关产品推荐

