黑马程序员技术交流社区

标题: 问下学长老师们一个关于 继承 的小问题? [打印本页]

作者: 疲劳的小马    时间: 2014-2-13 22:11
标题: 问下学长老师们一个关于 继承 的小问题?
本帖最后由 何伟超 于 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 22:40
一个java文件中用public修饰的类,是要跟文件名相同的。不然会报错的。
你上面的代码,把修饰B的public去掉,就能编译通过。
然后,上面代码的java文件,可以编译,但是不能运行。因为是把在文件中跟文件名相同的类的main函数作为入口的。

作者: kkopopo    时间: 2014-2-13 22:42
楼主 ,没猜错的话 你的类文件中有2个public类  这个不是继承的问题!  一个文件中可以有若干类但只能有一个public
作者: 郭运川    时间: 2014-2-13 22:48
前面的应该是:在子类的成员方法覆盖父类的成员方法时,必须保证子类方法的权限必须大于等于父类方法的权限,否则编译失败
至于此次编译错误,原因如下:
1、如果类B被声明为公共的(public),那么必须将类B保存在名为B.java的文件中;
2、反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同。比如文件B.java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为B。此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等。
作者: 疲劳的小马    时间: 2014-2-13 23:04
李金中 发表于 2014-2-13 22:40
一个java文件中用public修饰的类,是要跟文件名相同的。不然会报错的。
你上面的代码,把修饰B的public去掉 ...

原来是这样,明白了,谢学长
作者: 疲劳的小马    时间: 2014-2-13 23:06
kkopopo 发表于 2014-2-13 22:42
楼主 ,没猜错的话 你的类文件中有2个public类  这个不是继承的问题!  一个文件中可以有若干类但只能有一 ...

不是的,我就是在桌面上建立了一个demo.java的文件,然后里面写了这个小代码
作者: 疲劳的小马    时间: 2014-2-13 23:07
郭运川 发表于 2014-2-13 22:48
前面的应该是:在子类的成员方法覆盖父类的成员方法时,必须保证子类方法的权限必须大于等于父类方法的权限 ...

谢谢学长,讲的很细,我明白了。。不过。内部类我还没学到呢,暂时不懂嘿嘿




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2