Java包的使用

1 什么是Java包(package)

Java包是一组相似类型的类,接口和子包。

Java中的程序包可以分为两种形式:内置程序包和用户定义程序包。

有许多内置软件包,例如java,lang,awt,javax,swing,net,io,util,sql等。

本章节,主要学习如何创建和使用用户定义的程序包。

2 Java包(package)的优势

  1. Java软件包用于对类和接口进行分类,以便可以轻松维护它们。
  2. Java包提供类的访问权限保护。
  3. Java包消除了命名冲突。

3 Java包(package)的简单示例

在Java中使用package关键字创建包:

package mypack;  //这是创建自定义Java包
/**
 * 一点教程网 - http://www.yiidian.com
 */
public class Simple{
    public static void main(String args[]){
        System.out.println("我们终于学习到Java包啦");
    }
}  

4 如何编译Java包(package)

如果不使用任何IDE,则需要遵循以下语法:

javac -d 目录 文件名称  

例如:

javac -d . Simple.java

-d:代表指定将生成的类文件保存到哪个目录位置。你可以使用任何目录名称,例如/home(Linux系统),d:/abc(Windows系统)等。如果要将软件包保留在同一目录中,可以使用.(点)。

5 如何运行Java包(package)

你需要使用标准名称,例如mypack.Simple等来运行该类。

编译: javac -d . Simple.java

运行:java mypack.Simple

输出结果为:

我们终于学习到Java包啦

-d:用于告诉Java编译器将类文件放在哪里,即表示目的地。 . 代表当前文件夹。

6 访问Java包(package)的方式

有三种方式可以从外部访问到Java包:

  1. import package.*;
  2. import package.classname;
  3. 全限定名

6.1 import package.*

如果使用package.*,则可以访问此包下的所有类和接口,但不能访问子包。

import关键字用于使当前程序包可以访问另一个程序包的类和接口。

//A.java
package pack;
public class A{
    public void msg(){
        System.out.println("你好");
    }
}  
//B.java  
package mypack;
import pack.*; //导入另一个包

class B{
    public static void main(String args[]){
        A obj = new A();
        obj.msg();
    }
}  

输出结果为:

你好

6.2 import package.classname

如果使用import package.classname导入包,则只能访问此包下的类。

//A.java  
package pack;
public class A{
    public void msg(){
        System.out.println("你好");
    }
}  
//B.java  
package mypack;
import pack.A; //导入另一个包

class B{
    public static void main(String args[]){
        A obj = new A();
        obj.msg();
    }
}  

输出结果为:

你好

6.3 全限定名

如果使用完全限定名,则只能访问此程序包下声明的类。弊端是,每次访问类或接口时,都需要使用完全限定名老导入。

通常在两个包具有相同的类名时使用,例如java.util和java.sql包都包含Date类。

//A.java  
package pack;
public class A{
    public void msg(){
        System.out.println("你好");
    }
}  
//B.java  
package mypack;
class B{
    public static void main(String args[]){
        pack.A obj = new pack.A();//使用全限定名 
        obj.msg();
    }
}  

输出结果为:

你好

注意:如果导入某个包,是不会导入其子包的。

如果导入包,则将导入该包的所有类和接口,但不包括子包的类和接口。因此,您还需要导入子包。

程序的顺序必须先定义包,然后再导入包,最后再是类。


7 Java的子包(package)

包里面的包称为子包。子包的作用在于对软件包下的类进一步分类。

让我们举个例子,Sun公司定义了一个名为java的包,其中包含许多类,例如System,String,Reader,Writer,Socket等。这些类表示一个特定的组,例如Reader和Writer类用于IO流操作,Socket和ServerSocket用于网络编程等。因此,Sun公司将Java包细分为lang,net,io等子包,并将与Input/Output相关的类放在io包中,将Servet和ServerSocket类等类放在net包中,等等。

7.1 子包定义语法

package com.yiidian.core;
class Simple{
    public static void main(String args[]){
        System.out.println("你好,子包");
    }
} 

编译: javac -d . Simple.java
运行: java com.yiidian.core.Simple

输出结果为:

你好,子包

 

推荐好课