【发布时间】:2012-12-28 22:46:00
【问题描述】:
好的,例如,假设我有一个名为“Vehicle”的抽象类。 Vehicle 类除其他外还有一个名为wheel 的静态变量,该变量未初始化。我想要做的是从车辆类扩展其他子类,如“摩托车”和“卡车”,并在这些子类中初始化车轮。
代码:
public abstract class Vehicle {
static int wheels; //number of wheels on the vehicle
}
但以下不起作用:
public class Motorcycle extends Vehicle {
wheels = 2;
}
有没有办法有效地做到这一点?
编辑: 感谢到目前为止所有回复的人。我知道制作实例可能比将它们全部放在单独的类中更好的方法,但是我没有完美地获得 java 的“静态”部分,所以我需要一些帮助。
我要为我的程序做的是为 Motorcycle 和 Truck 类设置单独的精灵,我希望它们是静态的,这样我就不必在每次创建实例时重新加载图像摩托车或卡车。不过,除此之外,它们将具有几乎相同的属性,这就是为什么它们都将从 Vehicle 超类扩展而来。
我能看到的唯一另一种方法是不在 Vehicle 类中声明 sprite 变量,而是在 Motorcycle/Truck 类中声明,如下所示:
public abstract class Vehicle {
//Other coding
}
public class Motorcycle extends Vehicle {
static BufferedImage sprite = //initialize image
//Other coding
}
public class Truck extends Vehicle {
static BufferedImage sprite = //initialize image
//Other coding
}
【问题讨论】:
-
我认为您误解了 Java 语言和 OO 编程的一些基础知识。将轮子作为静态看起来不正确。
-
您可以扩展您的声明,即它“不起作用”。
-
@MikeQ Pun 有意?
标签: java variables subclass superclass