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

Java如何重写父类方法?Car类setCapacity重写失效求助

问题出在方法重写的签名不匹配上!

你这是踩了Java方法重写的经典小坑——子类的方法签名和父类的对不上,导致JVM根本没把它当成重写的方法,而是当成了一个全新的重载方法。

看细节:

  • 父类Vehicle的setCapacity是带int类型参数的:public void setCapacity(int newCapacity)
  • 你在Car类里写的setCapacity却是无参的:public void setCapacity()

这俩根本不是同一个方法!所以当你调用car1.setCapacity(1600)的时候,JVM找不到子类带int参数的setCapacity,就直接跑去调用父类的版本了。

怎么修复?

把Car类里的setCapacity改成和父类完全一致的签名,然后在方法里实现你要的逻辑就行——只输出提示,不修改容量。另外强烈建议加上@Override注解,编译器会帮你检查是不是真的正确重写了父类方法,避免再踩类似的坑。

修复后的完整代码:

class Vehicle { // base class
    int capacity;
    String make;

    Vehicle(int theCapacity, String theMake) {
        capacity = theCapacity;
        make = theMake;
    }

    void print() {
        System.out.println("Vehicle Info:");
        System.out.println(" capacity = " + capacity + "cc");
        System.out.println(" make = " + make);
    }

    public void setCapacity(int newCapacity) {
        capacity = newCapacity;
        System.out.println("New capacity = " + capacity);
    }
}

class Car extends Vehicle {
    String type, model;

    Car(int theCapacity, String theMake, String theType, String theModel) {
        super(theCapacity, theMake);
        type = theType;
        model = theModel;
    }

    public void print() {
        super.print();
        System.out.println(" type = " + type);
        System.out.println(" model = " + model);
    }

    // 修正:和父类方法签名完全一致,加上@Override注解做校验
    @Override
    public void setCapacity(int newCapacity) {
        System.out.println("Cannot change capacity of a car");
        // 啥也别干,就输出提示,不修改容量
    }
}

class Task3 {
    public static void main(String[] args) {
        Car car1 = new Car(1200,"Holden","sedan","Barina");
        Vehicle v1 = new Vehicle(1500,"Mazda");
        v1.setCapacity(1600);
        v1.print();
        car1.setCapacity(1600);
        car1.print();
    }
}
额外小提醒

方法重写的核心要求就是方法签名完全匹配——方法名、参数类型、参数数量都得和父类一模一样。另外访问权限不能比父类更严格(比如父类是public,子类不能改成private),不过你这里已经满足了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:54