【发布时间】:2015-01-31 08:12:13
【问题描述】:
public class HelloWorld
{
public static void main(String []args)
{
Horse obj1=new Horse();
Horse obj2=obj1;
Animal obj3;
obj3=obj2;
obj2.name="Mustang";
obj3.name="Alpha";
obj3.display();
}
}
class Animal
{
String name;
void display()
{
System.out.println("this is "+name);
}
}
class Horse extends Animal
{
String name;
void display()
{
System.out.println("this is "+name);
}
}
你好,我是java初学者,如果问题很愚蠢,我很抱歉。这是一个简单的程序,其中一个引用变量 obj2 引用了另一个相同类型的引用变量 obj1。如果我更改实例变量“名称”,它们都会发生变化,因为我猜这两个参考变量都指向相同的内存。现在我创建了另一个动物类型的引用变量“obj3”,它是超类。我让它引用了 obj2,现在当我尝试使用 obj3 更改实例变量“名称”时它不起作用。谁能告诉我为什么会这样?
【问题讨论】:
-
什么是“它不起作用?”你期待看到什么?
-
我期待“这是 Alpha”作为输出,但它打印“这是野马”