📅  最后修改于: 2020-09-25 14:45:27             🧑  作者: Mango
Java软件包是一组类似类型的类,接口和子软件包。
java中的程序包可以分为两种形式,内置程序包和用户定义程序包。
有许多内置软件包,例如java,lang,awt,javax,swing,net,io,util,sql等。
在这里,我们将详细学习如何创建和使用用户定义的程序包。
1)Java软件包用于对类和接口进行分类,以便可以轻松维护它们。
2)Java包提供访问保护。
3)Java包消除了命名冲突。
package关键字用于在Java中创建一个包。
//save as Simple.java
package mypack;
public class Simple{
public static void main(String args[]){
System.out.println("Welcome to package");
}
}
如果不使用任何IDE,则需要遵循以下语法:
javac -d directory javafilename
例如
javac -d . Simple.java
-d开关指定将生成的类文件放入的目标位置。您可以使用任何目录名称,例如/home(对于Linux),d:/abc(对于Windows)等。如果要将软件包保留在同一目录中,可以使用。(点)。
您需要使用完全限定的名称,例如mypack.Simple等来运行该类。
To Compile: javac -d . Simple.java
To Run: java mypack.Simple
有三种从包装外部访问包装的方法。
如果使用package。*,则可以访问此包的所有类和接口,但不能访问子包。
import关键字用于使当前程序包可以访问另一个程序包的类和接口。
//save by A.java
package pack;
public class A{
public void msg(){System.out.println("Hello");}
}
//save by B.java
package mypack;
import pack.*;
class B{
public static void main(String args[]){
A obj = new A();
obj.msg();
}
}
如果导入package.classname,则只能访问此包的声明的类。
//save by A.java
package pack;
public class A{
public void msg(){System.out.println("Hello");}
}
//save by B.java
package mypack;
import pack.A;
class B{
public static void main(String args[]){
A obj = new A();
obj.msg();
}
}
如果使用完全限定的名称,则只能访问此程序包的声明的类。现在,无需导入。但是,每次访问类或接口时,都需要使用完全限定的名称。
通常在两个包具有相同的类名时使用,例如java.util和java.sql包包含Date类。
//save by A.java
package pack;
public class A{
public void msg(){System.out.println("Hello");}
}
//save by B.java
package mypack;
class B{
public static void main(String args[]){
pack.A obj = new pack.A();//using fully qualified name
obj.msg();
}
}
注意:如果导入软件包,则不会导入子软件包。
如果导入包,则将导入该包的所有类和接口,但不包括子包的类和接口。因此,您还需要导入子包。
注意:程序的顺序必须先打包然后导入然后再类。
包内的包称为子包。应该创建它以对软件包进行进一步分类。
让我们举个例子,SunMicrosystem定义了一个名为java的包,其中包含许多类,例如System,String,Reader,Writer,Socket等。这些类表示一个特定的组,例如Reader和Writer类用于输入/输出操作,Socket和ServerSocket。类用于网络等。因此,Sun将Java包细分为lang,net,io等子包,并将与Input/Output相关的类放在io包中,将Server和ServerSocket类放在net包中,依此类推。
package com.javatpoint.core;
class Simple{
public static void main(String args[]){
System.out.println("Hello subpackage");
}
}
To Run: java com.javatpoint.core.Simple
有一种情况,我想将A.java源文件的类文件放在c:驱动器的classes文件夹中。例如:
//save as Simple.java
package mypack;
public class Simple{
public static void main(String args[]){
System.out.println("Welcome to package");
}
}
e:\sources>javac-dc:\classesSimple.java
To run this program from e:\source directory, you need to set classpath of the directory where the class file resides.
e:\sources> set classpath=c:\classes;.;
e:\sources> java mypack.Simple
-classpath开关可与javac和java工具一起使用。
要从e:\source目录运行此程序,可以使用java的-classpath开关来告诉要在哪里查找类文件。例如:
e:\sources>java-classpathc:\classesmypack.Simple
有两种加载类文件的方法,临时的和永久的。
//save as C.java otherwise Compilte Time Error
class A{}
class B{}
public class C{}
如果您想在一个包中放置两个公共类,请使用包含一个公共类的两个java源文件,但保持包名相同。例如
//save as A.java
package javatpoint;
public class A{}
//save as B.java
package javatpoint;
public class B{}