就要考了,但是147中还有两题完全不明白,请高手解答。

luoyuanfan 2003-08-25 10:48:55
74
====
1. public class Mycircle {
2. public double radius;
3. public double diameter;
4.
5. public void setRadius(double radius) {
6. this.radius = radius;
7. this.diameter = radius * 2;
8. }
9.
10. public double getRadius() {
11. return radius;
12. }
13. }

Which statement is true?

A. The Mycircle class is fully encapsulated.
B. The diameter of a given MyCircle is guaranteed to be twice its radius.
C. Lines 6 and 7 should be in a synchronized block to ensure
encapsulation.
D. The radius of a MyCircle object can be set without affecting its
diameter.

答案是D。
问D是怎么得来的?
还有Mycircle class怎样写才是fully encapsulated?

Which two statements are true? (Choose Two)

A. An anonymous inner class can be declared inside of a method.

B. An anonymous inner class constructor can take arguments in some
situation.

C. An anonymous inner class that is a direct subclass that is a direct
subclass of Object can implement multiple interfaces .

D. Even if a class Super does not implement any interfaces, it is still
possible to define an anonymous inner class that is an immediate
subclass of Super that implements a single interface.

E. Even if a class Super does not implement any interfaces, it is still
possible to definean anonymous inner class that is an immediate
subclass of Super that implements multiple interfaces.

答案是AB。
B、C、D、E 都麻烦帮忙详细解释解释。

谢了。
...全文
67 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
行业达人 2004-03-18
  • 打赏
  • 举报
回复
更正一下,D是对的!
行业达人 2004-03-18
  • 打赏
  • 举报
回复
A选项毫无疑问是对的。B选项错的原因是anonymous inner class根本没有constructor,
它使用的是父类的constructor。纵然看起来“它的constructor”是可以带参数的,但这个
constructor并不是它的,而是它父类的(这里有点钻牛角尖的味道,可能不是出题者本意)。C、D、E
错的原因都是因为anonymous inner class只可以从一个interface或者class继承。
panpan221 2004-03-16
  • 打赏
  • 举报
回复
来学习一下
eshow 2004-02-05
  • 打赏
  • 举报
回复
第一题的B和C为什么错啊?谁能解释一下??
eshow 2004-02-05
  • 打赏
  • 举报
回复
楼上两位对thinking in java理解错了!

BruceEckel说的是当匿名内部类所继承的父类的constructor带参数怎么办?而不是说匿名内部类的constructor本身能带参数!而且他只说了一种实现匿名内部类的方法,就是通过instance initial(实例初始化!)

上面的程序段其实就是下面的意思:
public Test wrap(int x){
class annymousTest extends Test {
annymousTest() { super(x);}
public int value(){
return super.value()*47;
}
}
return new annymousTest()
}


另to hesi726(hesi):内部类当然可以继承自己外面的类啦!!你自己写一小段编译一下就知道了!!

所以答案是AD!!!
panpan221 2004-01-02
  • 打赏
  • 举报
回复
上面的都已经说的很好了,都说的很好呀,我同意
AlexJava2 2004-01-02
  • 打赏
  • 举报
回复
我也觉得B是对的,下面是偶根据ThinkingInJava写的一个完整的例子:

关于匿名内部类:
(1) 一个匿名类,用于实现一个接口
(2) 一个匿名类,用于扩展拥有非默认构建器的一个类
(3) 一个匿名类,用于执行字段初始化
(4) 一个匿名类,通过实例初始化进行构建(匿名内部类不可拥有构建器)

public class Test {
private int i;
public Test(int x) { i = x; }
public int value() { return i; }

}
class Test2
{
public Test wrap(int x){//传入x作为base class构造函数的参数
return new Test(x){//把new Test(x)传入基础类的构建器
public int value(){//覆盖父类的方法
return super.value()*47;
}
};
}
public static void main(String[] args)
{
Test2 t = new Test2();
Test test = t.wrap(10);
System.out.println(test.value());//得出结果为470

}
}

也就是说,我们将适当的自变量简单地传递给基础类构建器,在这儿表现为在“new Test(x)”中传递x。但是匿名类不能拥有一个构建器。

所以:B. An anonymous inner class constructor can take arguments in some
situation.
一个匿名内部类的构建器在某些时候(用于扩展拥有非默认构建器的一个类的时候)是可以接收参数的说法是正确的.
:)
接分!!!


luoyuanfan 2003-09-05
  • 打赏
  • 举报
回复
就这么点吗?接下来呢?
hesi726 2003-09-05
  • 打赏
  • 举报
回复
E 就更加没有什么好说的了!
hesi726 2003-09-05
  • 打赏
  • 举报
回复
Even if a class Super does not implement any interfaces, it is still
possible to define an anonymous inner class that is an immediate
subclass of Super that implements a single interface.
即使一个类没有实现任何接口,它仍然可以定义匿名内部类,该类实现了一个接口,并且是该类的直接子类???

匿名内部类可以继承自某个类吗???
不行啊!!
hesi726 2003-09-05
  • 打赏
  • 举报
回复
An anonymous inner class that is a direct subclass that is a direct
subclass of Object can implement multiple interfaces .
肯定错误!
一个匿名内部类不可能是实现多个接口的直接子类!
匿名内部类只能实现接口!!
blank3 2003-09-05
  • 打赏
  • 举报
回复
我觉得B是对的,下面是think in java里抄来的例子
public Wrapping wrap(int x){//传入x作为base class构造函数的参数
return new Wrapping(x){
public int value(){
return super.value()*47;
}
};
我e文不好,看不懂D和E。谁讲解一下
luoyuanfan 2003-09-03
  • 打赏
  • 举报
回复
我要得是分析
jessiesong 2003-09-03
  • 打赏
  • 举报
回复
因为匿名inner class是没有class name的,所以也就应该没有constructor了,所以B应该是错的。
yangtaylor 2003-09-01
  • 打赏
  • 举报
回复
答案是AD,那个AB答案一定是印刷错误。
luoyuanfan 2003-09-01
  • 打赏
  • 举报
回复
还有没有人啊!
luoyuanfan 2003-08-27
  • 打赏
  • 举报
回复
楼上的跟我的想法一样。
duke7y 2003-08-26
  • 打赏
  • 举报
回复
2题答案好像是a,d
jface 2003-08-25
  • 打赏
  • 举报
回复
请问147是什么东西啊?能不能也给我一份呢?谢谢啦!
lp11@sohu.com
luoyuanfan 2003-08-25
  • 打赏
  • 举报
回复
这个我已经想到了,只是想印证一下。不过我还是要谢谢你!

后面的疑问有谁能解答一下?
加载更多回复(1)

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧