JAVA GA(2)
第5題
題目:
11. class A{String write(){return "Nothing";}}
12.class B extends A{String write(){return "Chinese";}}
13.class C extends A{String write(){return "English";}}
14.public class Z {
15. public static void main(String[] args) {
16. A a=new B();
17. C c=(C) a;
18. System.out.println(a.write()+" "+c.write());
19. }
20.}
下列何者為結果?
(A) Nothing English
(B) Chinese English
(C) 執行錯誤
(D) 編譯錯誤
你的答案: B
正確答案: C
錯誤
[詳解]
多型:
編譯會過,因為編譯只知a是A的物件,所以是可以強制轉型為C。
執行時,a是會參照到B的物件,但B與C之間無繼承關係,所以會造成
執行錯誤。
題目:
11. class A{String write(){return "Nothing";}}
12.class B extends A{String write(){return "Chinese";}}
13.class C extends A{String write(){return "English";}}
14.public class Z {
15. public static void main(String[] args) {
16. A a=new B();
17. C c=(C) a;
18. System.out.println(a.write()+" "+c.write());
19. }
20.}
下列何者為結果?
(A) Nothing English
(B) Chinese English
(C) 執行錯誤
(D) 編譯錯誤
你的答案: B
正確答案: C
錯誤
[詳解]
多型:
編譯會過,因為編譯只知a是A的物件,所以是可以強制轉型為C。
執行時,a是會參照到B的物件,但B與C之間無繼承關係,所以會造成
執行錯誤。
第10題
題目:
11. class ClassA{}
12. class ClassB extends ClassA{}
13. class ClassC extends ClassA{}
and:
21. ClassA p0 = new ClassA();
22. ClassB p1 = new ClassB();
23. ClassC p2 = new ClassC();
24. ClassA p3 = new ClassB();
25. ClassA p4 = new ClassC();
Which one is valid?
(A) p0 = p1;
(B) p1 = p2,
(C) p2 = p4;
(D) p2 = (ClassC)p1;
你的答案: D
正確答案: A
錯誤
[詳解]
(B) 因為p1是屬於ClassB,p2是屬於ClassC,所以p2不能assign給p1
(C) p2是屬於ClassC,p4 類別 ClassA,ClassC為ClassA的子類別,所以在 assign 時要轉型, p2 = (ClassC)p4,否則compiler 不會過
(D) p1是屬於ClassB,p2是屬於ClassC,但p1不能轉型為ClassC
題目:
11. class ClassA{}
12. class ClassB extends ClassA{}
13. class ClassC extends ClassA{}
and:
21. ClassA p0 = new ClassA();
22. ClassB p1 = new ClassB();
23. ClassC p2 = new ClassC();
24. ClassA p3 = new ClassB();
25. ClassA p4 = new ClassC();
Which one is valid?
(A) p0 = p1;
(B) p1 = p2,
(C) p2 = p4;
(D) p2 = (ClassC)p1;
你的答案: D
正確答案: A
錯誤
[詳解]
(B) 因為p1是屬於ClassB,p2是屬於ClassC,所以p2不能assign給p1
(C) p2是屬於ClassC,p4 類別 ClassA,ClassC為ClassA的子類別,所以在 assign 時要轉型, p2 = (ClassC)p4,否則compiler 不會過
(D) p1是屬於ClassB,p2是屬於ClassC,但p1不能轉型為ClassC