java中包的使用问题package。

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:53:51
刚刚提问的时候点的太快了,还没说完呢。

以下是详细问题:
工作目录是D盘
在D盘下建立两个文件,A.java,B.java
A.java如下
package a;
public class A{
public void display(){
System.out.println("hello.");
}
}
B.java 如下
import a.*;
public class B{
public static void main(String [] args){
A a=new A();
a.display();
}
}
然后再命令提示符下编译:
javac -d d: A.java 成功
javac B.java 错误,信息如下:
D.java:4: cannot access A
bad class file: .\A.java
file does not contain class A
Please remove or make sure it appears in the correct subdirectory of the classpa
th.
A t=new A();
^
1 error

但是若把B.java的第一行改为import a.A;
则可以成功编译运行,并得到输出结果:
hello.

请问这是什么原因呢?

import这个命令调用的是一个类(class),而你的a是一个包,a.A才是指a这个包下面的A类..所以你必须写import a.A.*;才可以.
而且java有约定,当你将一个类放在一个包里后,如果要调用就要将其完整的路径写出来,比如如果你这样写:import A.*;也会报错,虽然A是一个类,但是系统在默认包里是找不到A这个类的,所以你必须指明是a这个包下的类,因此你要写import a.A.*;才行..

什么问题?package就是指向包的路径啊。

所谓的包就是文件夹。
通俗点解释,你声明的A类在a包下,也就是a文件夹下,你声明的B类在b包下,也就是b文件夹下.两个文件夹都在D盘下。属于同一目录。所以,你在B类中要调用A类的方法,那就要告诉B类A类的路径,应此就要import a.A; 导包。那么才能成功调用A类。

最好让类名具体指向某包中的类名
新的java群。。技术交流。有意着加1221388

我也很想知道