类成员的访问权限控制问题,解决后即结帖 书也不完全正确, 呵呵. 去掉Public之后, 对于同一个包来说是可见的, 估计你这两个文件是在一个目录下吧. 不同Package的话, 不可访问. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java默认的访问控制权限是包级的,也就是说一个package内的class都可以访问,但package以外的不可访问!private是拒绝访问的!你的PackageTest如果放在test下是可以运行的! 书上并没有说错,我想你是把这两个类放在了同一个包下吧,你把PackageTest和ABC放在不同的包下,然后把show的public属性去掉,你在PackageTest里调用show就会出错 如果在分在两个包的话,没有public修饰 show方法肯定不能被使用,这一点不用怀疑,你能使用可能两个类在一个包内,PackageTest类放到别的路径下试试你就知道了 我没有搞错。ABC.class in d:\java\test\PackageTest.java in d:\java\难道这也是在一个包里? 我没有搞错。ABC.class in d:\java\test\PackageTest.class in d:\java\难道这也是在一个包里? 你在classpath里设置路径d:\java\了吗 关键不是文件保存的位置,而是java文件中声明的package ChDw(米) java文件如上 realzealy(国米无敌) 没有,我只设了 set classpath=.;d:\jdk\lib;d:\jdk\lib\dt.jar;d:\jdk\lib\tools.jar不过我编译的时候用了 javac -d . ABC.java 自动创建文件夹test,错在哪儿呢? 我测试过,去掉public后是不行的,是不是你去掉了public后没有重新编译? 如果2个class是在同一个包中,去掉public当然没关系!!!默认的访问权限相当于C++的friend!!!在不同包中只有public才能相互访问!!! 你没有设的话package test;这句就没用,因为你package后的路径,是接在classpath路径后的系统只会在classpath下找寻package的文件夹,你在classpath里设置路径d:\java\ 类文件保持不动再试试 caojinfeng() 我把.class文件都删了,重新编译的还不行,奇怪! file1 d:\java\ABC.javapackage test;public class ABC{ int x=5; public void show(){ System.out.println(x); } }file2 PackageTest.javaimport test.*;class PackageTest{ public static void main(String args[]){ ABC obj=new ABC(); obj.show(); }}javac -d . ABC.java生成文件夹及文件为d:\java\test\ABC.classjavac -d PackageTest.java生成文件夹及文件为d:\java\PackageTest.classjava PackageTest能成功显示5,郁闷,why? 关于String用new初始化和不用new初始化区别? 关于J2EE异常处理的想法,希望一起讨论一下... 特急!!同一包下为什么不能互相引用??? 传值问题和TreeSet问题 有类似insight的功能的java控件吗?? 求救!!怎样才能在JIntenalFrame中画图呀??? 怎样建立两个JFRAME之间的‘父子’关系!? 在线等! 关于数据转换的问题?急! 求大佬 初学者请教,这段二分法的代码出了什么问题? 高分求高效方法实现(2) 一個鬱悶的問題!!!大家來瞧一瞧!!!!
ABC.class in d:\java\test\
PackageTest.java in d:\java\
难道这也是在一个包里?
ABC.class in d:\java\test\
PackageTest.class in d:\java\
难道这也是在一个包里?
realzealy(国米无敌) 没有,我只设了 set classpath=.;d:\jdk\lib;d:\jdk\lib\dt.jar
;d:\jdk\lib\tools.jar不过我编译的时候用了 javac -d . ABC.java 自动创建文件夹test,错在哪儿呢?
默认的访问权限相当于C++的friend!!!
在不同包中只有public才能相互访问!!!
系统只会在classpath下找寻package的文件夹,你在classpath里设置路径d:\java\ 类文件保持不动再试试
file1 d:\java\ABC.javapackage test;
public class ABC{
int x=5;
public void show(){
System.out.println(x);
}
}file2 PackageTest.javaimport test.*;
class PackageTest{
public static void main(String args[]){
ABC obj=new ABC();
obj.show();
}
}javac -d . ABC.java
生成文件夹及文件为d:\java\test\ABC.class
javac -d PackageTest.java
生成文件夹及文件为d:\java\PackageTest.class
java PackageTest
能成功显示5,郁闷,why?