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

Java子类初始化父类引用变量报错:VariableDeclaratorId expected after this token

问题解决:VariableDeclaratorId expected after this token

你遇到的错误是因为不能直接在类的成员区域执行赋值语句,flyBehaviour = new FlyWithWings();属于可执行语句,必须放在构造方法、初始化块或者成员方法中。下面是几种正确的修复方式:

方式1:通过构造方法初始化

在子类中添加构造方法,在构造方法内完成赋值:

public class MallarDuck extends Duck {
    public MallarDuck() {
        flyBehaviour = new FlyWithWings();
    }
}

方式2:使用实例初始化块

实例初始化块会在构造方法执行前运行,适合初始化逻辑:

public class MallarDuck extends Duck {
    {
        flyBehaviour = new FlyWithWings();
    }
}

不推荐的方式:重新声明变量(会隐藏父类成员)

如果在子类中重新声明flyBehaviour,虽然语法上能通过,但会隐藏父类的同名变量,破坏继承的封装性,不建议这么做:

public class MallarDuck extends Duck {
    Flyable flyBehaviour = new FlyWithWings();
}

另外补充:父类Duck中的perfomFly方法拼写有误,正确写法是performFly,避免后续调用时出现方法名错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:01:58