Topic: 310-035testking中一个不懂题目

  Print this page

1.310-035testking中一个不懂题目 Copy to clipboard
Posted by: gutxgc
Posted on: 2006-04-26 09:12

1. public class Test {
2. public static void main(String args[]) {
3. class Foo {
4. public int i = 3;
5. }
6. Object o = (Object)new Foo();
7. Foo foo = (Foo)o;//我不明白这里为什么要这样写,能否解释一下
8. System.out.println(“i = “ + foo.i);
9. }
10. }
What is the result?
A. i = 3
B. Compilation fails.
C. A ClassCastException is thrown at line 6.
D. A ClassCastException is thrown at line 7.
Answer: A

2.Re:310-035testking中一个不懂题目 [Re: gutxgc] Copy to clipboard
Posted by: zcjl
Posted on: 2006-04-26 11:12

1.第七行语句是一个类型转换,这个没有什么不明白的吧?
2.这段代码
Object o = (Object) new Foo();
Foo foo = (Foo) o;
好像的确没有什么意义,在实际应用中通常也不会这样写。
但既然是考试题目,就不用太在意它的实际意义,只需要能分析出代码执行的结果就行了。
Object o = (Object) new Foo(); //根据Foo来创建一个Object对象。请注意此时o是Object类型的引用,不能根据o来访问Foo对象的field,比如这里的i
Foo foo = (Foo) o; //将Object对象转型为Foo类型,并赋给引用foo。请注意这里并没有生成新对象,所以o==foo的结果是true。但是foo是一个Foo类型的引用,所以可以直接使用foo.i的方式来访问Foo对象的field

3.Re:310-035testking中一个不懂题目 [Re: gutxgc] Copy to clipboard
Posted by: gutxgc
Posted on: 2006-04-26 13:09

谢谢大侠
就是看起来不爽
不怎么明白而以
现在明白了过些就去考scjp了


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923