本文最后更新于:1 年前

Java笔记——包

创建时间:2019.11.23

说明:持续更新ing


  1. 概念

包(package)

为了更好地组织,Java 提供了包机制,用于区别类名的命名空间。

✔ 用来组织和管理类、接口、枚举和注解
✔ 有三方面作用:1)便于组织,比如按功能、按团队等;2)解决命名冲突;3)进行访问权限控制(同包可用,包外不可见等)

如同类似OS的文件夹(或目录或路径)一样,包也采用了树形目录的存储方式。


  1. 作用

  • 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  • 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  • 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

🔺 Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

同一个包中类名字是不同的,不同包中类的名字可以相同,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。


  1. 语法格式

package	包名
或
package 父包名[.子包名][.孙包名][.层次下去]

🔸包名符合标识符命名规范,一般由小写字母组成
🔹必须出现在源文件的第一行(忽略注释语句)
🔸每个源文件至多只能出现一个package语句
🔹如果没有package语句,那就使用无名包(或称默认包:所在的当前目录)
🔸包的背后对应着操作系统的路径名称

  • 示例:

    package ch08.web.sample; 
    
    public class Person { 
        String name; 
        int age;
        //省略部分代码 
    } 
    
    class Dog { 
        String name; 
        int age; 
        //省略部分代码
    }

    🔺package ch08.web.sample; 这个层级的文件夹必须先存在:即ch08/web/sample

    来自课件《8.类的更多探讨》.png


  1. 包的使用

🔺import 关键字

为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。

为了使用另外一个包中的成员(主要是类),可以明确import该成员。

避免重复使用完整路径的类名

  • 语法格式:

    import package1[.package2…].(classname|*);
  • 注意:

    1. 必须紧跟在package语句之后(若有的话,若无package,则import出现在源文件头部)。

    2. 可以使用 * 来表示导入当前一层包中的所有类。但是* 不可以连续使用。

      import java.*.*; // Error!
    3. 不表示可以继续导入当前包的子包。如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。

    4. 类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。


  1. Java常用包

🔵JavaAPI的类库也是按照包的方式组织的

包名 描述 备注
Java.lang Java语言进行程序设计的基础类(核心类库),它是默认导入的包 Runnable接口和Object、Math、String、StringBuffer、System、Thread、Throwable类
Java.util 实用工具类包 定义系统特性、随机数、日期时间、日历、集合类等
Java.io IO类包 包含能提供多种输入输出的文件读写类
Java.net 网络编程API
Java.sql 数据库操作包
Java.text 文本处理相关类 包含了一些用来处理文本、数字和消息的类和接口
Java.awt 提供创建界面和绘制图形图像的所有类
Javax.asing awt上封装的GUI包

 目录