【发布时间】:2014-06-09 19:37:38
【问题描述】:
这是我的情况(不是实际代码,只是一个粗略的大纲):
class Base {
public static Image img;
}
class A extends Base {
A() {
img = "code to get certain image here";
}
}
class B extends Base {
B() {
img = "code to get certain image2 here";
}
}
我有一个 Base 数组,其中一些是 A 或 B。我想获取特定于该类的 img 实例。例如。如果它是 A 的一个实例,它将显示在 A 中定义的 img。但是我不能只使用 if 语句,因为我将加班添加许多不同的类,而且我希望获取图像的代码不需要更改为包含更多课程。
【问题讨论】:
-
在
Base中创建一个display方法并让A和B相应地覆盖它。除了您的情况,这通常可以工作,因为Image img是static。您知道这种设计的后果吗? -
只需在超类的构造函数中传入即可。类似
super(img) -
就像@LuiggiMendoza 建议在您发布的代码中使用
static必须是拼写错误。如果不是,那么您应该停止思考/致力于整体设计,并确保您首先了解该语言的基本原理。 -
你不能转换类(或对象),你只能转换引用。这是一个重要的区别。