请教各位老师:对象引用的问题
今天我遇到一个在网上看到的问题,可是我反复运行编译,就是不理解其中的道理,希望各位老师给予解答,谢谢
题目是这样的:
class A
{
int a = 1;
int b;
void f()
{
System.out.println("abc");
}
}
class B extends A
{
double a = 2.1;
double b;
void f()
{
System.out.println("ABC");
}
}
public class ExtendsTest
{
public static void main(String[] args)
{
A x1 = new A();
B x2 = new B();
System.out.println(x1.a);
x1 = x2;
System.out.println(x1.a);
System.out.println(x2.a);
x1.f();
}
}
运行结果:
1
1
2.1
ABC
疑问:x1=x2后,为何输出的x1.a仍为1,而x1.f()却为ABC
这里的对象的引用之间是怎么赋值的呢?请老师详细解答
还有一个疑问:继承 我们知道继承其实就是类的复制
那么A继承了B,是不是里面的方法和字段都继承呢?
一开始对上面的问题我是想通过继承来解释
B继承了A,那么B.f()就是"ABC",当x1=x2;
A.f()也就是"ABC"
可是x1.a却没有改变,那么通过继承也是解释不通的
我是一位刚学JAVA的学生,可是这个对象的引用问题就是搞不懂,可能问题很简单,也请各位老师能给我详细解答说明下,再次感谢