导入一个包中的全部文件时应该怎么处理! 为什么我的程序运行不了呢
导入一个包中的全部文件时应该怎么处理! 为什么我的程序运行不了呢
导入一个包中的全部文件时应该怎么处理! 为什么我的程序运行不了呢
2015-08-12
我之前没有导入整个包,只导入了Telephone文件,没有问题。
然后我尝试了你的方法,结果也不行,但是并没有报错,只是调用的是本包的类而不是导入的包的类
参考了《Java编程语言》(第三版)Arnold,Gosling,Holmes 著 第264页到265页的内容
improt attr*;
使用*号导入语句叫做“按需导入”(import on demand)声明。也可以采用单一类型导入(single type import):
import attr.Attrinbuted;
……
import 机制是一种被动机制,因为关于有名包的信息和类型信息并不是在编译时被读入加载的——直到包中的某个类型被使用时才读入这些信息,import语句只是简单的告诉编译器,当他在本地找不到定义的类型时,它应该如何确定类型的完全限定名。……编译器会按下面的顺序查找该类型:
包括子类型的当前类型
当前类型中的嵌套类型
显式命名的导入类型(单类型导入)。
在同一个包内声明的其他类型。
隐式命名的导入类型(按需导入)。
我前后用的两种方法的优先顺序分别是3和5,而在同一个包中还声明了Telephone,它在4。所以,当单类型导入的时候可以而按需导入的时候不行。我想这应该是为什么出错的原因
package imooc; //import imooc.second.TelePhone; import imooc.second.*; public class mainPhone { public static void main(String[] args){ //TelePhone phone1 = new TelePhone(); TelePhone phone1 = new imooc.TelePhone(); phone1.getPhone(); TelePhone phone2 = new imooc.second.TelePhone(); phone2.getPhone(); SmartPhone sPhone = new SmartPhone(); sPhone.getSmartPhone(); } }
package imooc.second; public class TelePhone { public void getPhone(){ System.out.println("imooc.second.telephone running !"); } }
package imooc; public class TelePhone { public void getPhone(){ System.out.println("imooc.Telephone running !"); } }
举报