【发布时间】:2016-12-13 00:43:28
【问题描述】:
一共有三个类
class Flower{}
class Violet extends Flower{}
class Gardenia extends Flower{}
主类是这个
class Test{
public static void main(String[] args) {
Flower f1 = new Flower();
Flower f2 = new Gardenia();
Violet v = new Violet();
Gardenia g1 = new Gardenia();
Gardenia g2 = new Gardenia();
g1 =f1;
f1 = g1;
g1=v;
v=(Violet)f2;
g2=f1;
g1=f2;
}
}
问题是如何例如 g1 =f1;可以写成不同的吗?直接将对象引用分配给另一个对象看起来很混乱。在这段代码中,我们被要求进行正确的转换并注释那些我们不能做任何事情的行(我们不想要 ClassCastEcxeption)。例如在f1=g1; 行中,我们可以说Flower f1=g1;。
【问题讨论】:
-
你的意思是
g1 = (Gardenia)f2;?不清楚你在问什么。 -
我的意思是在分配了
f1=g1;之后,我们可以像Flower f1= new Gardenia();这样写这个分配吗?之后,f1 将是指向Gardenia();? 的 Flower 类型的实例
标签: java inheritance casting reference