首页 > 代码库 > java中包容易出现的错误及权限问题
java中包容易出现的错误及权限问题
/*3,权限在不同地方的体现: public protected default private同一类中: ok ok ok ok同一包中: ok ok ok子类中: ok ok 不同包中: ok 在同一包中子类中是可以访问父类中默认权限(default)的方法,但是在不同包中不行!在不同包中如果子类继承了父类,那么子类就可以访问父类中的protected方法!*///import mytest.*;/*package mytest;public class DemoA{ public void show(){ new Demo().show(); }}class Demo{ void show(){ System.out.println("DemoA 中 Demo show!"); }}*//*package mytestone;import mytest.*;public class DemoAChild extends DemoA{ public void show(){ super.show(); System.out.println("DemoAChild show!"); }}*/public class Test{ public static void main(String[] args){ //DemoA在mytest包中,将show方法protected之后就会挂掉 //mytest.DemoA x = new mytest.DemoA(); //x.show(); // DemoAChild 继承了 DemoA, 该show方法也是protected权限,但是没有放在包中。正常运行! //DemoAChild xx = new DemoAChild(); //xx.show(); //DemoAChild 继承了 DemoA,并放在包中, 该show方法必须是public权限才正常运行! mytestone.DemoAChild xx = new mytestone.DemoAChild(); xx.show(); }} /*错误1:Test.java:4: 错误: 无法访问DemoA DemoA x = new DemoA(); ^ 错误的类文件: .\DemoA.class 类文件包含错误的类: mytest.DemoA 请删除该文件或确保该文件位于正确的类路径子目录中。1 个错误原因:DemoA这个类是属于包mytest体系的,没有放在正确的子路径下!之前的编译为:javac DemoA.java处理:删掉编译产生的.class文件, 重新编译 javac -d . DemoA.java(让系统自动生成包的子目录);——----------------------------------------------------------错误2:Test.java:4: 错误: 无法访问DemoA DemoA x = new DemoA(); ^ 错误的源文件: .\DemoA.java 文件不包含类DemoA 请删除该文件或确保该文件位于正确的源路径子目录中。1 个错误原因:源文件和自定义的包在同一子目录下!处理:请删除该文件或确保该文件位于正确的源路径子目录中。或者明确 DemoA的所属包,即 mytest.DemoA--------------------------------------------------------------错误3:Test.java:4: 错误: 找不到符号 DemoA x = new DemoA(); ^ 符号: 类 DemoA 位置: 类 Test2 个错误原因:类名错误。处理:因为DemoA已经有包所属,必须明确其包名。所以应为 包名.DemoA 即 mytest.DemoA 或者 import mytest.*; 导入包中的类--------------------------------------------------------------错误4:Test.java:4: 错误: DemoA在mytest中不是公共的; 无法从外部程序包中对其进行访问 mytest.DemoA x = new mytest.DemoA(); ^原因:包与包之间的访问权限必须是public的! 否则 其他的三个(protected default private)权限都是将类封装在包内!处理:那就加上public白!---------------------------------------------------------------错误5:Test.java:5: 错误: show()在DemoA中不是公共的; 无法从外部程序包中对其进行访问 x.show(); ^1 个错误原因:包中的类是对外公有的,所以该类的成员方法如果在其他包中的类中使用必须也将权限定义为公有!处理:再加上public白!*/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。