以下是引用cll19820814在2006-1-11 10:24:00的发言:
我不告诉你我在哪里,你找不找得到我??
你不告诉类A 类B的位置,又怎么引用类B呢?
看看关于封装的部分就了解了。
请问要怎么把包p1的位置告诉包p2?
p1中的三个.java文件我都在开头加了package p1;p2中的两个.java文件我加了package p2;我没用import,我在p2中的.java文件调用p1中的类的语句处用的全名,也就是包名(p1)+类名;
我的classpath:.;C:\j2sdk1.4.2_10\lib
我在命令行方式是这样键入的:
先编译p1中的.java文件:
E:\JAVA\p1>javac SamePackage.java Protection.java Derived.java Demo.java(编译通过)
然后:
E:\JAVA\p1>cd..
E:\JAVA>java p1.Demo(显示出正确结果)
再编译p2中的.java文件:
E:\JAVA\p2>javac Demo.java OtherPackage.java Protection2.java(编译通不过)
错误信息:
Protection2.java:2: package p1 does not exist
class Protection2 extends p1.Protection
^
OtherPackage.java:6: package p1 does not exist
p1.Protection p=new p1.Protection();
^
OtherPackage.java:6: package p1 does not exist
p1.Protection p=new p1.Protection();
^
Protection2.java:9: cannot resolve symbol
symbol : variable n_pro
location: class p2.Protection2
System.out.println("n_pro="+n_pro);
^
Protection2.java:10: cannot resolve symbol
symbol : variable n_pub
location: class p2.Protection2
System.out.println("n_pub="+n_pub);
^
5 errors
接着我将包p1整个复制到包p2中再次编译:
E:\JAVA\p2>javac Demo.java OtherPackage.java Protection2.java(这次编译通过了)
E:\JAVA\p2>cd..
E:\JAVA>java p2.Demo(得到正确结果)
这到底是什么原因呢?