Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483888
  • 博文数量: 46
  • 博客积分: 2044
  • 博客等级: 上尉
  • 技术积分: 395
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-11 15:50
文章分类

全部博文(46)

文章存档

2012年(1)

2011年(19)

2010年(26)

我的朋友

分类: Java

2011-02-16 10:08:31

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) |
给主人留下些什么吧!~~

chinaunix网友2011-03-06 17:48:01

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com