Java package



Java package

java package是一组相似类型的类,接口和子package。
java中的程序包可以分为两种形式: 内置package和用户定义package。
有很多内置package,例如java,lang,awt,javax,swing,net,io,util,sql等。
在这里,我们将详细学习创建和使用用户定义包的过程。

Java package的优点

1)Java package用于对类和接口进行分类,以便于维护。
2)Java package提供访问保护。
3)Java package消除了命名冲突。

Java package_https://bianchenghao6.com_【Java 基础教程】_第1张


java package的简单示例

package关键字用于创建一个用Java打包。
 package mypack;
public class Simple{
    public static void main(String args[]){
        System.out.println("Welcome to package");
    }
}

如何编译Java包

如果不使用任何IDE,则需要遵循以下给出的
语法:
 javac -d directory javafilename

对于
示例
 javac -d . Simple.java

-d开关指定将生成的类文件放入的目标位置。您可以使用任何目录名称,例如/home(对于Linux),d: /abc(对于Windows)等。如果要将软件包保留在同一目录中,可以使用.(点)。

如何运行Java包程序

您需要使用完全限定的名称,例如mypack.Simple等运行类。

要编译: javac -d . Simple.java
要运行: java mypack.Simple
 Output:Welcome to package

-d是一个开关,它告诉编译器将类文件放在哪里,即它表示目标位置。的。代表当前文件夹。

如何从其他软件包访问软件包?

有三种方法可以从外部访问软件包包。

import package.*;
import package.classname;
完全限定的名称。

1)使用package.*

如果使用程序包。*,则可以访问该程序包的所有类和接口,但不能访问子程序包。
import关键字用于使当前程序包可以访问另一个程序包的类和接口。

import package.*示例

 //save by A.javapackage pack;
public class A{
    public void msg(){
        System.out.println("Hello");
    }
}

 //save by B.javapackage mypack;
import pack.*;
class B{
    public static void main(String args[]){
        A obj = new A();
        obj.msg();
    }
}

 Output:Hello


2)使用packagename.classname

如果导入package.classname,则仅此包的声明类

import packagename.classname示例

 //save by A.javapackage pack;
public class A{
    public void msg(){
        System.out.println("Hello");
    }
}

 //save by B.javapackage mypack;
import pack.A;
class B{
    public static void main(String args[]){
        A obj = new A();
        obj.msg();
    }
}

 Output:Hello


3)使用完全限定的名称

如果您使用完全限定的名称,则仅此包的声明类易于访问。现在,无需导入。但是每次访问类或接口时,都需要使用完全限定的名称。
通常在两个包具有相同的类名称(例如, java.util和java.sql程序包包含Date类。

通过导入完全限定名称的程序包示例

 //save by A.javapackage pack;
public class A{
    public void msg(){
        System.out.println("Hello");
    }
}

 //save by B.javapackage mypack;
class B{
    public static void main(String args[]){
        pack.A obj = new pack.A();
        //using fully qualified name obj.msg();
    }
}

 Output:Hello

注意: 如果您导入软件包,则不会导入子软件包。

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

注意: 程序的顺序必须先打包,然后再导入,然后再类。

Java package_https://bianchenghao6.com_【Java 基础教程】_第2张


java中的子包

该包中的包称为
子包。应该创建它
以便对该软件包进行进一步的分类
让我们举个例子,Sun Microsystem定义了一个名为java的软件包,其中包含许多类,例如System,String,Reader,Writer,套接字等。这些类表示特定的组,例如Reader和Writer类用于输入/输出操作,Socket和ServerSocket类用于网络等,依此类推。因此,Sun将Java包细分为lang,net,io等子包,并将与Input/Output相关的类放在io包中,将Server和ServerSocket类放在net包中,等等。
定义包的标准是domain.company.package,例如com.lidihuo.bean或org.sssit.dao。

子包示例

 package com.lidihuo.core;
class Simple{
    public static void main(String args[]){
        System.out.println("Hello subpackage");
    }
}

要编译: javac -d . Simple.java
要运行: java com.lidihuo.core.Simple
 Output:Hello subpackage


如何将类文件发送到另一个目录或驱动器?

有一种情况,我想将A.java源文件的类文件放入c: 驱动器的classes文件夹中。例如:

Java package_https://bianchenghao6.com_【Java 基础教程】_第3张

 //save as Simple.javapackage mypack;
public class Simple{
    public static void main(String args[]){
        System.out.println("Welcome to package");
    }
}

要编译:

e:\sources > javac -d c:\classes Simple.java

运行:

要从e:\source目录运行此程序,您需要设置类文件所在目录的类路径。
e:\sources> set classpath = c:\classes;。;
e:\sources> java mypack.Simple

通过Java -classpath开关运行该程序的另一种方式:

-classpath开关可以是
要从e:\source目录运行此程序,可以使用java -classpath开关来告诉要在哪里查找类文件。例如:
e:\sources> java -classpath c:\classes mypack.Simple
 Output:Welcome to package


加载类文件或jar文件的方式

有两种方法可以临时和永久加载类文件。

临时 通过在命令提示符下设置类路径 通过-classpath切换
永久 通过在环境变量中设置类路径 通过创建包含所有类文件的jar文件,并将jar文件复制到jre/lib/ext文件夹中。


注意: java源文件中只能有一个公共类,并且必须使用公共类名称保存。

 //save as C.java otherwise Compilte Time Errorclass A{
}
class B{
}
public class C{
}


如何将两个公共类放入一个包中?

如果要在一个程序包中放入两个公共类,请有两个包含一个公共类的Java源文件,但要保持程序包名称不变。例如:
 //save as A.javapackage lidihuo;
public class A{
}

 //save as B.javapackage lidihuo;
public class B{
}


Java5的静态导入功能是什么?

点击Java5的静态导入功能。