2009年2月10日 星期二

第62題

Given:
31. class Foo{
32. public int a = 3;
33. public void addFive(){ a += 5; System.out.print("f "); }
34. }
35. class Bar extends Foo{
36. public int a = 8;
37. public void addFive(){this.a += 5; System.out.print("b ");}
38. }

Invoked with:
Foo f = new Bar();
f.addFive();
System.out.println(f. a);
What is the result?
A. b 3
B. b 8
C. b 13
D. f 3
E. f 8
F. f 13
G. Compilation fails,
H. An exception is thrown at runtime.
答案:A
參考:7-9 多型

-----------------------------------------

f 的實體類型(Bar()) 跟 宣告類型不同 (Foo), 呼叫方法時會呼叫實體類型的方法.
存取屬性時會呼叫宣告類型.
37. public void addFive(){this.a += 5; System.out.print("b ");}
32. public int a = 3;

沒有留言:

張貼留言