今天刚开始看《java编程思想》第六章——访问权限控制,想到了一个问题,就是你导入了两个不同的包,包里面有相同名字的类,会怎样?
有这么几种情况(我用的是JDK8):
1.导入两个包,但不调用这个类
首先创建两个包,我创建的是Dome 和 Dome05,里面都有Dome01这个类,
Dome05包里面有Dome03类
package Dome06;
import Dome05.*;
import Dome.*;
public class Dome02 {
Dome03 d2 = new Dome03();
}
没有报错
2.导入包内所有的类;
package Dome06;
import Dome05.*;
import Dome.*;
public class Dome02 {
Dome03 d2 = new Dome03();
Dome01 d = new Dome01();
}
出现报错:The type Dome01 is
ambiguous Dome01摸棱两可
是因为Dome01 不知道是哪一个包里的,所以会报错。
3.导入单个类
package Dome06;
import Dome05.*;
import Dome.Dome01;
public class Dome02 {
Dome01 d = new Dome01();
Dome03 d2 = new Dome03();
}
导入单个类,就不会出现报错;
4.都导入单个类:
package Dome06;
import Dome05.Dome01;
import Dome.Dome01;
public class Dome02 {
Dome01 d = new Dome01();
}
会出现报错,而报错的位置是import Dome.Dome01;
而Dome01 d = new Dome01();会显示为Dome05包里面的类;
所以,如果导入相同的java类,会优先选择先导入的,后面导入的会报错