当前位置: 技术问答>java相关
scjp考题一道....
来源: 互联网 发布时间:2015-03-05
本文导语: Q2.What is the output when folllowing code is run? 1. class OuterOne{ 2. class InnerOne extends OuterOne{} 3. static void thisMethod(){ 4. Object o=(Object)new OuterOne(); 5. OuterOne foo=(OuterOne)o; 6. } 7. public static void main(String args[]){ 8. this...
Q2.What is the output when folllowing code is run?
1. class OuterOne{
2. class InnerOne extends OuterOne{}
3. static void thisMethod(){
4. Object o=(Object)new OuterOne();
5. OuterOne foo=(OuterOne)o;
6. }
7. public static void main(String args[]){
8. thisMethod();
9. }
10. }
1. Will compile fine,but at runtime a ClassCastException is thrown
2. Will compile and run fine
3. Compiler error at line 4
4. Compiler error at line 5
请大家给我解释一下第四行,第五行,怎么构造的,很模糊。
1. class OuterOne{
2. class InnerOne extends OuterOne{}
3. static void thisMethod(){
4. Object o=(Object)new OuterOne();
5. OuterOne foo=(OuterOne)o;
6. }
7. public static void main(String args[]){
8. thisMethod();
9. }
10. }
1. Will compile fine,but at runtime a ClassCastException is thrown
2. Will compile and run fine
3. Compiler error at line 4
4. Compiler error at line 5
请大家给我解释一下第四行,第五行,怎么构造的,很模糊。
|
object 是java中所有类的顶级类,所以
Object o=(Object)new OuterOne();//表示为o为Object对象指针,并使用OuterOne()作为其构造方法
OuterOne foo=(OuterOne)o; //将o强制转换为OuterOne, 并赋给foo
Object o=(Object)new OuterOne();//表示为o为Object对象指针,并使用OuterOne()作为其构造方法
OuterOne foo=(OuterOne)o; //将o强制转换为OuterOne, 并赋给foo
|
第4 行这样构造:Object o=(Object)new OuterOne();
第5 行这样构造: OuterOne foo=(OuterOne)o;
两行合起来相当于OuterOne o=new OuterOne();
OuterOne foo=o;
第5 行这样构造: OuterOne foo=(OuterOne)o;
两行合起来相当于OuterOne o=new OuterOne();
OuterOne foo=o;