class Boo{
Boo(String s){}
Boo(){}
}
class Bar extends Boo{
Bar(){}
Bar(String s){super(s);}
void zoo(){
//insert code here
}
}
which create an anonymous inner class from within class Bar?(choose all that apply)
A. Boo f = new Boo(24){}
B. Boo f = new Bar(){};
C. Boo f = new Boo(){String s;};
D. Bar f = new Boo(String s){};
E. Boo f = new Boo.Bar(String s){};
选B,C
A:匿名类与其说一个类,不如说它是一个表达式,因为写匿名类是在一个表达式里面写的,所以要注意写完一个匿名类后要在结尾写一个“:”
D:new Boo(String s){};这里的内部类虽然继承了Boo,但是这里实例化的类与Bar一点关系都没有(虽然他们都继承了Boo类,就像三角形和四边形继承自形状,你能说三角形是四边形吗)
E;匿名类不像普通的内部类,不要向E一样要Boo.Bar(String s){}; 这样写,这样写没有任何意义
new Bar(){} 和new Bar()的区别在于,第一个相当于继承了Bar类然后实例化Bar的子类对象(也就是说第一个是之类对象),后一个就是Bar对象
匿名类就是一个没有名字的,把继承类与实例化子类对象压缩在一个表达式里面
Boo(String s){}, Boo(){}这是统一各位类中的两个构造方法,没有什么关系,都是用来初始化对象的,一个是有参数的,一个是没有参数的,在实例化对象时,只能选择其中一个
阅读(1310) | 评论(1) | 转发(0) |