我正在尝试实现 java.But 的 DMD 概念,但未按预期获得输出
I'm trying to implement DMD concept of java.But not getting the output as expected
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”,它应该显示 "Rectangle" 但我得到的输出是 "Circle"。可能是因为之前引用了 r=c。
但这仍然是一个疑问。
您之前已将 c
分配给变量 r
。
当你到达第 t = r
行时,r = c
已经...所以现在 t = c
。
为什么要创建变量 t
只是为了将 r
和 c
分配给它?为什么不直接处理 r
和 c
让事情更清楚?
此行为符合预期,因为您已经分配了 r = c,然后分配了 t = r,因此对象 t 引用持有的是 c,即圆。因此它打印输出为 Circle。我希望这可以解释 JAVA.
的行为
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”,它应该显示 "Rectangle" 但我得到的输出是 "Circle"。可能是因为之前引用了 r=c。 但这仍然是一个疑问。
您之前已将 c
分配给变量 r
。
当你到达第 t = r
行时,r = c
已经...所以现在 t = c
。
为什么要创建变量 t
只是为了将 r
和 c
分配给它?为什么不直接处理 r
和 c
让事情更清楚?
此行为符合预期,因为您已经分配了 r = c,然后分配了 t = r,因此对象 t 引用持有的是 c,即圆。因此它打印输出为 Circle。我希望这可以解释 JAVA.
的行为