作者conanist (QQ)
看板java
标题[问题]关於多型的成员变数
时间Tue Jul 28 19:26:34 2009
以下式程式码
class Foo{
public int a=4;
public void addFive(){
a+=5;
System.out.print("F");
}
}
public class E62 extends Foo {
public int a=8; //重新定义变数
public void addFive(){
this.a+=5;
System.out.print("b");
}
public int getValue(){
System.out.print("BB");
return this.a;
}
public static void main(String[] args) {
// TODO, add your application code
Foo f =new E62();
f.addFive();
System.out.println(f.a);
}
}
问题出自SCJP 6.0 认证教战手册 黄彬华着 第62题
在多型的观念里面 我们都只讨论函式的复写
但是如果函式用到成员变数时 到底要用哪一个呢?
是父类别的 型别 还是子类别的实体
这题的答案跑程式是b4 但是 如果把E62里的 int a=8; 注解的话 答案是b9
我不太明白 f.a的原理
希望有人可以解惑一下 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.121.234
1F:→ pico2k:这是继承,不是多型 07/28 19:46
2F:→ pico2k:去查一下java downcast的东东吧 07/28 20:29
3F:→ pico2k:是upcast...XD 07/28 20:35
4F:→ adrianshum:楼上说的都不是. 找关於 shadowning 的东西看看吧 07/29 10:39
5F:推 legnaleurc:就是单纯名称被覆盖而已,没有多型在作用 07/29 11:32
6F:推 szss8765:这好像有人问过了...这好像是:上面某篇问的... 07/29 11:45