class Rectangle extends Tri{
public void draw() {
System.out.println("Rectangle");
}
}
class Tri {
public void draw() {
System.out.println("Triangle");
}
}
class Circle extends Rectangle{
public void draw() {
System.out.println("Circle");
}
}
class rect
{
public static void main(String[] args)
{
Circle c=new Circle();
Tri t=new Tri();
Rectangle r=new Rectangle();
r.draw(); //Rectangle
r=c;
r.draw(); //Circle
t=r;
t.draw(); // Rectangle expected.But getting Circle as output.
}
}
在“ t.draw ”中,我提到“ t = r ”,它应该显示“矩形”但是我的输出为“Circle”。可能是因为早期的引用 r = c 。 但它仍然是一个疑问。
答案 0 :(得分:0)
您之前已将c
分配给变量r
。
当你到达t = r
行时,r = c
已经......现在t = c
。
为什么要创建变量t
只是为了为其分配r
和c
?为什么不直接处理r
和c
以使事情变得更清楚?
答案 1 :(得分:0)
此行为符合预期,因为您已指定r = c然后t = r,因此对象t引用保持为c即circle。因此它将输出打印为Circle。我希望这能解释JAVA的行为。