A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何伟超 于 2014-2-13 23:41 编辑

学长老师们,你们好,我最近才接触开始学毕老师的那套基础视屏,感觉毕老师教课太好了,由于才接触很多不懂,问点比较小儿科的问题给大家,大家不要笑我好么?我现在学到继承那里,问大家一个小小的问题。我学习的时候,听老师说 继承的子类的访问权限应该大于等于父类,于是就自己写了个简单的不能再简单的了。如下:
class A {}
public class B extends A {}

然后编译时就报错了,显示这个:demo.java:2: 类 B 是公共的,应在名为 B.java 的文件中声明
public class B extends A
       ^
1 错误

这是为什么呀?B的权限不是大于A么?

点评

一切都是浮云!  发表于 2014-2-13 23:42

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1 虽然你的问题很简单,但是只要勇敢的提问题.

查看全部评分

7 个回复

倒序浏览
一个java文件中用public修饰的类,是要跟文件名相同的。不然会报错的。
你上面的代码,把修饰B的public去掉,就能编译通过。
然后,上面代码的java文件,可以编译,但是不能运行。因为是把在文件中跟文件名相同的类的main函数作为入口的。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
楼主 ,没猜错的话 你的类文件中有2个public类  这个不是继承的问题!  一个文件中可以有若干类但只能有一个public
回复 使用道具 举报
前面的应该是:在子类的成员方法覆盖父类的成员方法时,必须保证子类方法的权限必须大于等于父类方法的权限,否则编译失败
至于此次编译错误,原因如下:
1、如果类B被声明为公共的(public),那么必须将类B保存在名为B.java的文件中;
2、反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同。比如文件B.java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为B。此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
李金中 发表于 2014-2-13 22:40
一个java文件中用public修饰的类,是要跟文件名相同的。不然会报错的。
你上面的代码,把修饰B的public去掉 ...

原来是这样,明白了,谢学长
回复 使用道具 举报
kkopopo 发表于 2014-2-13 22:42
楼主 ,没猜错的话 你的类文件中有2个public类  这个不是继承的问题!  一个文件中可以有若干类但只能有一 ...

不是的,我就是在桌面上建立了一个demo.java的文件,然后里面写了这个小代码
回复 使用道具 举报
郭运川 发表于 2014-2-13 22:48
前面的应该是:在子类的成员方法覆盖父类的成员方法时,必须保证子类方法的权限必须大于等于父类方法的权限 ...

谢谢学长,讲的很细,我明白了。。不过。内部类我还没学到呢,暂时不懂嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马