作者roadeat (www)
看板java
标题[问题] 关於JAVA属性覆写的机制
时间Mon May 30 21:28:15 2011
各位好:
程式码如下
class Father{
String name = "Father";
String greeting(){
return "class Father";
}
}
class Son extends Father{
String name = "Son";
String greeting(){
return "class Son";
}
void foo(){
System.out.println(((Son)this).name);
System.out.println(((Father)this).name);
System.out.println(((Son)this).greeting());
System.out.println(((Father)this).greeting());
}
}
public static void main(String[] args){
new Son().foo();
}
ANS:
Son
Father
class Son
class Son
疑惑:
请问为什麽((Father)this).name,转型成为Father类别时,是列印出Father类别的
属性name;而(Father)this).greeting(),却会因为覆写机制列印出class Son。
属性不是也会覆写吗?new Son()时,相同都有String name不是会覆写过去吗?
谢谢解惑
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.167.23
1F:→ awert:parent field不会被同名的child field "override" 05/30 22:42
2F:→ awert:正确一点的用字应该叫"shadow",parent field单纯被隐藏起来 05/30 22:44
3F:推 tomap41017:推楼上回覆:) 05/30 23:45
4F:→ roadeat:THX 05/30 23:52