作者minnie823 (小卷)
看板java
标题[问题] 请问final可以被改写吗??
时间Wed Jul 27 14:51:18 2011
不好意思来这里问这麽基本的问题, 还请高手帮小妹解惑
在看 SCJP 的练习题时, 有一题是:
1. public class Base{
2. public static final String FOO = "foo";
3. public static void main(String[] args){
4. Base b = new Base();
5. Sub s = new Sub();
6. System.out.print(Base.FOO);
7. System.out.print(Sub.FOO);
8. System.out.print(b.FOO);
9. System.out.print(s.FOO);
10. System.out.print(((Base)s).FOO);
11. }
12. }
13. class Sub extends Base{public static final String FOO = "bar";}
What is the result?
A. foofoofoofoofoo
B. foobarfoobarbar
C. foobarfoofoofoo
D. foobarfoobarfoo
E. barbarbarbarbar
F. foofoofoobarbar
G. foofoofoobarfoo
这一题的答案是D, 为什麽不是A??
final 不是不允许改写吗 >< ??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.72.92.133
1F:推 mars90226:的确会是两个不一样的变数,但是你存取的时候会拿到目前 07/27 15:47
2F:推 susaku:借此题想问为什麽答案不是B @@? 07/27 15:48
3F:→ mars90226:类型有的变数 但是可以用关键字来取得父类别的变数 07/27 15:49
4F:推 ayumi001:最後一个已经被转型成Base的型别了 所以是呼叫Base的FOO 07/27 15:57
5F:推 tomoyaken14:两个FOO是不同的东西,这题主要是考继承与多形 07/27 19:20
6F:推 AI3767:如果没记错的话, 这个不是改写, 而是shadowed 07/27 20:23
7F:推 peacedove:java里面继承class的field是新增的 跟method的继承不一 07/28 03:25
8F:→ ymca9056020:在child class override parent class 的 final类的 08/03 00:18
9F:→ ymca9056020:对不起回错噜 这的确可称做 shadow 您可以google 一下 08/03 00:26