Java中带包(创设及引用)的类的编译与调试
Java中带包(创建及引用)的类的编译与调试
B.java






被java 手动 编译 运行 时 带包 搞糊涂过吗?现在,总结下:
第一步:要弄清-classpath /-cp 的作用
在javac / java 中的作用:加上这个参数,告诉编译器,指明要被引用的.class 文件或 .java 的位置,精确到目标文件,或目标文件夹(若有包机制)的上一层目录名。
第二步:要弄清-d 的作用
在javac 中的作用: 若在java 文件中,有包机制,加上这个参数:-d+路径,会在该路径下,生成相应的包。
第三点:
若在当前目录下,编译或运行,就可省略 -cp 参数。
第四点:
java 中默认修饰符为default,只可在同一个包下才能被访问引用,所以被引用的
第五点:
好,先面来实践下:
A.java
package p1; public class A { public int i; public void m() {} }
B.java
package p2; import p1.*; public class B extends A { public static void main(String[] args){ B b=new B(); System.out.println(b.i); b.m(); } }
A.java /B.java 所在的目录为:/home/luo/jdk/lab
解释下:
我在lab目录下,找到A.java/B.java 并且在jdk目录下编译生成p1/p2.
那么加载A.class/B.class时,类加载器会在当前目录下先查找,这种情况下能找到。
下面的方法复杂点:
再解释下:
在编译A.java/B.java 时,pwd=/home/luo/jdk.
把p1.A 生成在 jdk/lab下,把p2.B 生成在 jdk下,
最后加载类时,我所处在的目录为 :/home/luo
所以加载类时,得吧p1.A p2.B 的路径显示化指明,两个路径间用 ":" 相连,再再指明要运行的类名,即含有main()函数的类。