设为首页 加入收藏

TOP

4.7.1 类的导入
2013-10-07 00:26:43 来源: 作者: 【 】 浏览:59
Tags:4.7.1 导入

4.7.1   类的导入

一个类可以使用所属包中的所有类,以及其他包中的公有类(public class)。我们可以采用两种方式访问另一个包中的公有类。第一种方式是在每个类名之前添加完整的包名。例如:

 

这显然很令人生厌。更简单且更常用的方式是使用import语句。import语句是一种引用包含在包中的类的简明描述。一旦使用了import语句,在使用类时,就不必写出包的全名了。

可以使用import语句导入一个特定的类或者整个包。import语句应该位于源文件的顶部(但位于package语句的后面)。例如,可以使用下面这条语句导入java.util包中所有的类。

 

然后,就可以使用

 

而无需在前面加上包前缀。还可以导入一个包中的特定类:

 

java.util.*的语法比较简单,对代码的大小也没有任何负面影响。当然,如果能够明确地指出所导入的类,将会使代码的读者更加准确地知道加载了哪些类。

提示:在Eclipse中,可以使用菜单选项Source甇rganize Imports。Package语句,如 import java.util.*,将会自动地扩展指定的导入列表,如:import java.util.ArrayList; import java.util.Date; 这是一个十分便捷的特性。

但是,需要注意的是,只能使用星号(*)导入一个包,而不能使用import java.*或import java.*.* 导入以java为前缀的所有包。

在大多数情况下,只导入所需的包,并不必过多地理睬它们。但在发生命名冲突的时候,就不能不注意包的名字了。例如,java.util和java.sql包都有日期(Date)类。如果在程序中导入了这两个包:

 

在程序使用Date类的时候,就会出现一个编译错误:

 

此时编译器无法确定程序使用的是哪一个Date类。可以采用增加一个特定的import语句来解决这个问题:

 

如果这两个Date类都需要使用,又该怎么办呢?答案是,在每个类名的前面加上完整的包名。

 

在包中定位类是编译器(comp iler)的工作。类文件中的字节码肯定使用完整的包名来引用其他类。

C++(www.cppentry.com)注释:C++(www.cppentry.com)程序员经常将import与#include弄混。实际上,这两者之间并没有共同之处。在C++(www.cppentry.com)中,必须使用#include将外部特性的声明加载进来,这是因为C++(www.cppentry.com)编译器无法查看任何文件的内部,除了正在编译的文件以及在头文件中明确包含的文件。Java编译器可以查看其他文件的内部,只要告诉它到哪里去查看就可以了。

在Java中,通过显式地给出包名,如java.util.Date,就可以不使用import;而在C++(www.cppentry.com)中,无法避免使用#include。

Import语句的惟一的好处是简捷。可以使用简短的名字而不是完整的包名来引用一个类。例如,在import java.util.*(或import java.util.Date)语句之后,可以仅仅用Date引用java.util.Date类。

在C++(www.cppentry.com)中,与包机制类似的是命名空间(namespace)。在Java中,package与import语句类似于C++(www.cppentry.com)中的namespace和using指令(directive)。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.6.3 默认构造器 下一篇4.4.5 Main方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: