关于java用import引入自定义的类的问题 光引入包名.*不行吗?

package myPackage;
public class Protected {
protected void p(){
System.out.println("protected method");
}
}
package myPackage;
public class Package {
public Package(){
Protected p = new Protected();
p.p();
}
public static void p(){
System.out.println("Package public method");
}
}
import myPackage.*;
//import myPackage.Package; //没有这个就不能用new Package?
public class ProtectedPackage {
public static void main(String[]args){
Protected newp = new Protected();
Package pp = new Package(); //??????????????????????
}
}
问号那里报错。为什么Protected就可以创建对象?Package就不行呢 必须把那句注释了的import加上?
还有为什么就不用import myPackage.Protected 而必须import myPackage.Package; ?

Package类在java.lang中也有定义,而且这个是默认引入的,所以你要引用你自己的Package类,必须使用import myPackage.Package
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-26
那是因为你的类名Package和系统的一个类名重复了,所以你使用这个类得时候要使用完整路径。
你重复的类名是java.lang.Package,而我们默认就是导入了java.lang.*这个包的,也就是说你导入的包中包含了两个同名的类,你必须用完整的路径来说明你用的是哪一个类,你如果把Package类改名为MyPackage就不用了。
相似回答