各位大大看看这道题

yztl83 2005-01-27 03:37:58
Given:
1. class Super {
2. public int i = 0;
3.
4. public Super(String text) {
5. i = 1;
6. }
7. }
8.
9. public class Sub extends Super {
10. public Sub(String text) {
11. i = 2;
12. }
13.
14. public static void main(String args[]) {
15. Sub sub = new Sub(“Hello”);
16. System.out.printIn(sub.i);
17. }
18. }
What is the result?
A. 0
B. 1
C. 2
D. Compilation fails.
Answer: D.
什么原因编译不了?小弟不解
...全文
161 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yztl83 2005-01-27
  • 打赏
  • 举报
回复
一个类成员是public 但当子类继承的时候就变为protect类型,不能直接调用
不是吧,子类的权限应该比父类弱,并不是只能proctect
yztl83 2005-01-27
  • 打赏
  • 举报
回复
我在想想
kingslee 2005-01-27
  • 打赏
  • 举报
回复
在试图new Sub的时候,会找不到Sub的父类Super。

因为Super还没有定义。

不过这个问题比较学究。
ybsoft 2005-01-27
  • 打赏
  • 举报
回复
一个类成员是public 但当子类继承的时候就变为protect类型,不能直接调用
bluemeteor 2005-01-27
  • 打赏
  • 举报
回复
真简单
printIn()

肯定是cannt resolve symbol 哈哈
不徻写代码 2005-01-27
  • 打赏
  • 举报
回复
up
dyhml 2005-01-27
  • 打赏
  • 举报
回复
同意,treesoft(长沙水) .

的确是这样.
playboylee 2005-01-27
  • 打赏
  • 举报
回复
还有,见意不要用与关键字相同的名字,搞特殊。我觉得对学习根本没有好处。出书的人的目的可以理解。但害初学者也是可见的。
treesoft 2005-01-27
  • 打赏
  • 举报
回复
记着把文件放在不同的文件里,或是去掉Super和Sub的public。
treesoft 2005-01-27
  • 打赏
  • 举报
回复
唉,原因很简单,在java中的构造函数必须调用父类,如果是无参构造函数则java在编译时会自动加上这个调用。

修改:

10. public Sub(String text) {
//add
super(text);
11. i = 2;
12. }
这样不会出错,会输出2.

jFresH_MaN 2005-01-27
  • 打赏
  • 举报
回复
一个文件里面只能有一个和文件名相同的public类
playboylee 2005-01-27
  • 打赏
  • 举报
回复
当然不行,public类的名字一定要和类文件名相同.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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