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

Java中如何为Vehicle子类Bus、Tram实现各自静态capacity属性

Java实现子类共享静态容量属性的设计方案

核心思路

父类Vehicle无需维护实例级别的capacity属性,而是定义抽象方法统一对外的容量获取接口,让子类自行实现类级别的静态容量逻辑。这样每个子类的所有实例共享同一静态容量值,不同子类可设置不同的容量。

代码实现

1. 抽象父类Vehicle

定义抽象方法getCapacity(),规范子类的容量获取行为:

public abstract class Vehicle {
    public abstract int getCapacity();
}

2. Bus子类实现

使用静态属性存储所有Bus实例共享的容量,实现父类抽象方法返回该静态值:

public class Bus extends Vehicle {
    // 静态属性:所有Bus实例共享同一容量
    private static int capacity;

    // 可选:提供静态方法修改容量(根据业务需求决定是否开放)
    public static void setCapacity(int newCapacity) {
        Bus.capacity = newCapacity;
    }

    @Override
    public int getCapacity() {
        return capacity;
    }
}

3. Tram子类实现

与Bus逻辑一致,独立维护自身的静态容量:

public class Tram extends Vehicle {
    private static int capacity;

    public static void setCapacity(int newCapacity) {
        Tram.capacity = newCapacity;
    }

    @Override
    public int getCapacity() {
        return capacity;
    }
}

使用示例

public class Main {
    public static void main(String[] args) {
        // 配置Bus的容量为50
        Bus.setCapacity(50);
        Bus busA = new Bus();
        Bus busB = new Bus();
        System.out.println(busA.getCapacity()); // 输出50
        System.out.println(busB.getCapacity()); // 输出50

        // 配置Tram的容量为80
        Tram.setCapacity(80);
        Tram tramX = new Tram();
        Tram tramY = new Tram();
        System.out.println(tramX.getCapacity()); // 输出80
        System.out.println(tramY.getCapacity()); // 输出80
    }
}

扩展:固定不可修改的容量

如果业务中容量无需动态修改,可将静态属性设为final,通过静态初始化赋值:

public class Bus extends Vehicle {
    // 固定容量,所有Bus实例共享且不可修改
    private static final int CAPACITY = 50;

    @Override
    public int getCapacity() {
        return CAPACITY;
    }
}

内容的提问来源于stack exchange,提问作者Michał Stachurski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:53:16