You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java继承场景子类构造器报参数列表长度不匹配编译错误

报错原因

Java继承机制有明确规则:所有子类的构造方法,必须在执行自身逻辑前先调用父类的构造方法。如果开发者没有在子类构造器第一行显式写父类构造调用代码,编译器会自动插入一行无参的super()调用,也就是默认找父类的无参构造方法执行。
你的代码里父类Adder只定义了一个接收int类型参数的构造器,一旦类里自定义了有参构造,Java就不会再自动生成默认的无参构造器。这时候子类构造器自动插入的无参super()找不到匹配的父类构造,就会抛出你看到的「参数列表长度不匹配」错误。
你给子类构造器加多少个参数都解决不了问题——只要没显式写对父类构造的调用,编译器还是会默认插入无参super(),报错逻辑完全不变。

修复方案

二选一即可:

  • 方案1(推荐):在子类构造器第一行显式调用父类的带参构造,传入匹配类型的参数
    修正后的子类代码:
    class ad extends Adder{
        int b;
        ad(int b){
            super(b); // 必须写在构造器第一行,显式调用父类Adder的int参数构造器
            this.b=b;
            System.out.println(b+"Derivative");
        }
    }
    
    运行后正常输出:
    5Base
    5Derivative
    
  • 方案2:给父类手动补充无参构造器,让默认插入的无参super()能匹配到
    父类补充代码示例:
    class Adder{  
        int a;
        // 手动添加无参构造
        Adder(){}
        Adder(int a){
            this.a=a;
            System.out.println(a+"Base");
        }
    }
    
    注意如果选这个方案,子类不主动调用父类带参构造的话,父类带参构造里的赋值、打印逻辑都不会执行。

内容的提问来源于stack exchange,提问作者Gunotham Solanki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:27:26