学到一直都没有注意到的东西了,请问LZ,你出错是因为什么导致的呢?
因为import的两种引用方法的工作机制不同。如果用到了“*”,import并不会按你设置路径来找要用的class文件,而是首先找classpath有没有
我本来就是把.java与包放在同一目录下的。只是如果导入的类文件的源文件如果也在此目录下的话,就不能按需导入了(如:import a.b.*)。但是移走引用类的源文件,就OK了。不信,你可以试试!
我这里需要导入的类源文件和类都在一个包对应的文件夹里面的,这样肯定是可以导入import xx.*;的
问题是,你需要导入的类的文件放在哪里,你必须放在也放到相应的包所对应的目录里面
然后去这两个包所在的共同的顶层目录下,去编译
首先我们假设我们当前的目录是C:\
比如有一个类是属于lbf.demo包,它叫A,那么A.java是放在C:\lbf\demo\这个文件夹下面.
还有一个类是属于xx.abc包,它的名字叫B,它需要用到A,那么B.java应该是放在C:\xx\abc\文件夹下面
CMD进入C:\
javac lbf\demo\A.java
javac xx\abc\B.java
然后再java xx.abc.B
就可以了,所以说,养成一个用包来组织程序的习惯很重要,源文件也同样需要管理
不过,现在IDE已经非常好的做到了这一点,使得代码管理更简单了,但是我们最好还是知道其原理更好一些
用这种方法,根本不用删掉源文件,一样可以编译运行成功
LZ可能是类命名冲突了,假如你当前路径或者classpath路径上有circle类,那么就造成了类名冲突所以说找不到类。
import chapter4.shape.shape2D.*;
class CirRecTest{
public static void main(String agrs[]){
chapter4.shape.shape2D.Circle cir=new chapter4.shape.shape2D.CircleCircle(10);
System.out.println("圆的半径为:"+cir.getRadius());
System.out.println("圆的面积为:"+cir.area());
System.out.println("圆的周长为:"+cir.perimeter());
Rectangle rec=new Rectangle(10,20);
System.out.println("矩形的边长为:"+rec.getLength()+","+rec.getWidth());
System.out.println("举行的面积为:"+rec.area());
System.out.println("矩形的周长为:"+rec.perimeter());
}
}
这样你试试,应该可以了。