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

位置: 类 Test

2 个错误

原因:类名错误。

处理:因为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白!

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值