【发布时间】:2011-04-13 21:23:19
【问题描述】:
为什么我们在 Java 中使用包? 如何使用它们?
【问题讨论】:
标签: java
为什么我们在 Java 中使用包? 如何使用它们?
【问题讨论】:
标签: java
包大部分只是一种组织代码的方式。 JDK 中有数千个类,而大型应用程序有数千个。为什么您不想要将它们组织成某种层次结构,以便您轻松找到您感兴趣的类?
包也参与 Java 中的访问控制(但有趣的是,不在 .NET 中) - 但我想说主要目的是帮助人类组织他们的代码有意义的。
它也意味着有时您可能希望或需要在多个包中使用相同的类名 - 其中包名有效地提供了上下文。现在,如果您正在为单个应用程序使用单个代码库,这通常是要尽量避免的 - 但如果您有一个大型代码库,其中许多不同的应用程序使用它的许多不同部分,这可能比尝试为每个类都设置一个唯一的名称要好。 (一个典型的例子是在用户界面代码中——只要查看 .NET 库,在三个独立的命名空间中有一个“Button”类,用于三个独立的 UI 框架。)
【讨论】:
包是对相似类进行分组的一种方式。您不想将所有类都放在一个包中,对吗?
【讨论】:
将 java 中的包视为您 PC 上的文件夹。你喜欢将不同类型的文件保存在不同的文件夹中,就像你在 java 的不同包中保存不同类型的类和接口一样。
通过这样做,我们获得了一些优势,其中一些在下面列出-
我们在包中定义类/接口,使用 java 关键字 package 后跟包结构。它必须是您的类/接口的第一条语句。如果您没有定义包名,那么该文件将被放置在默认包中,即您的源代码文件夹。
package com.my.package.MyClass;
Java 中使用的包前面带有关键字import。使用点 (.) 运算符访问包的级别,就像我们在 PC 上的文件夹中使用“/”或“\”一样。
导入一个名为 com\my\package 的包中可用的类 MyClass:
import com.my.package.MyClass;
导入名为 com\my\package 的包中所有可用的类:
import com.my.package.*;
只导入一个类的静态字段,这样不用类名就可以直接访问:
import static com.my.package.MyClass.myStaticField;
【讨论】: