【发布时间】:2015-05-06 08:53:06
【问题描述】:
标题说明了一切。
我在每个派生类中都有一个唯一的颜色,它被声明为静态的。
是这样的:
class CandyBlue extends Candy
{
public static final String color = "blue";
}
class CandyRed extends Candy
{
public static final String color = "red";
}
然后我有一个 Candy 类型的对象 S
class CandyFrenzy
{
Candy candies[][];
public CandyFrenzy()
{
candies = new Candy[4][4];
candies[0][0] = new CandyBlue();
candies[0][1] = new CandyRed();
....
}
public static void main(String args[])
{
CandyFrenzy candyFrenzy = new CandyFrenzy();
Candy candy;
for(int a=0; a<4; a++)
{
for(int b=0; b<4; b++)
{
candy = candies[a][b];
//print the color of the candy;
}
}
}
}
Candy 类没有成员颜色,所以我不需要发布它。 Candy 类的唯一重要性是用于多态性目的。
上面的代码没有尝试过,所以如果我不确定它是否相应地运行。
如何打印糖果的颜色?
【问题讨论】:
-
那不应该是静态的。
-
Color 是 object 实例的属性, 不是 类的属性。 如果您仍想这样做,请在您的实际问题域。
-
@RobertHarvey 我以为是相反的?
color是类级别字段,而不是实例的属性。 -
@ChetanKinger:不。类没有颜色。颜色是对象的属性;这样使用它避免了必须子类来创建新颜色的整个问题。
-
@SLaks 和@CaffeineToCode。我相信 OP 的意图是
color应该用一个常数来表示。实现是错误的,但其背后的意图是正确的。看我的回答。
标签: java