代码如下:
public class A { public String c = "parent"; public static void main(String[] dd) {
A a = new B();
B b = (B) a;
System.out.println(a);
System.out.println(b);
System.out.println(a.c);
System.out.println(b.c);
}
}
class B extends A { String c = "child";}运行结果如下:sa.B@c17164
sa.B@c17164
parent
child大家帮忙解释一下了.
public class A { public String c = "parent"; public static void main(String[] dd) {
A a = new B();
B b = (B) a;
System.out.println(a);
System.out.println(b);
System.out.println(a.c);
System.out.println(b.c);
}
}
class B extends A { String c = "child";}运行结果如下:sa.B@c17164
sa.B@c17164
parent
child大家帮忙解释一下了.
System.out.println(b.c);当然打印child 了。A a = new B();
B b = (B) a;
你这两个变量指的不是同一对象(地址),是两个。
2:属性没有多态
| |
|c--------------+---------------->"parent"
| |
|父类子对象 |
+---------------+
| |
|c--------------+----------------->"child"
| |
|子类 |
+---------------+a.c与b.c是所指不同。也就是在子类对象内部有两个属性,一个在父类子对象内,一个不在。
子类能继承父类的成有成员,在子类的中的与父类的同名成员是不同的对像。你调a.c和b.c当然不一样了。