java

导航

Java编程里的包及访问权限

来源 :中华考试网 2020-10-30

  在 Java 里,可以将一个大型项目中的类分别独立出来,分门别类地存到文件里, 再将这些文件一起编译执行,如此的程序代码将更易于维护。同时在将类分割开之后 对于类的使用也就有了相应的访问权限。本文将介绍如何使用包及访问控制权限。

  一、包(package)的基本概

  当一个大型程序由数个不同的组别或人员开发共同开发时,用到相同的类名称是 很有可能的事。如果这种情况发生,还要确保程序可以正确运行,就必须通过 package 关键字来帮忙了。

  package 是在使用多个类或接口时,为了避免名称重复而采用的一种措施。那么 具体应该怎么使用呢?在类或接口的最上面一行加上 package 的声明就可以了。

  【 格式1 package 的声明】

  package package 名称 ;

  经过 package 的声明之后,在同一文件内的接口或类都被纳入相同的 package 中。 程序 TestPackage1 是使用 package 的一个范例,如下所示:

  范例:TestPackage1.java

  01 package demo.java

  02 class Person

  03 {

  04 public String talk()

  05 {

  06 return "Person —— >> talk()"

  07 }

  08 }

  09

  10 class TestPackage1

  11 {

  12 public static void main(String[] args)

  13 {

  14 System.out.println(new Person().talk())

  15 }

  16 }

  在 TestPackage1.java 中,除了第 1 行的加的 package demo.java 声明语句之外,其余的程序都是读者见过的。由于第 1 行声明了一个 demo.java 的包,所以就相当于将 Person 类、TestPackage1 类放入了 demo.java 文件夹之下。现在来看一下上面的程序是 如何编译的:

  javac -d . TestPackage1.java

  “-d”:表示生成目录

  “.”:表示在当前目录下生成

  这样就会在当前目录下生成一个 demo 的文件夹,在 demo 文件夹下又会生成一个 java 文件夹,在此文件夹下会有编译好的 Person.class 和 TestPackage1.class,编译好之 后用下面的语法来执行它:

  java demo.java.TestPackage1

  输出结果:

  Person —— >> talk()

  二、import 语句的使用

  到目前为止,所介绍的类都是属于同一个 package 的,因此在程序代码的编写上 并不需要做修改。但如果几个类分别属于不同的 package 时,在某个类要访问到其它 类的成员时,则必须做下列的修改:

  若某个类需要被访问时,则必须把这个类公开出来,也就是说,此类必须声明成 public。

  若要访问不同 package 内某个 public 类的成员时,在程序代码内必须明确地指明 “被访问 package 的名称.类名称”。

  【 格式2 package 的导入】

  import package 名称.类名称 ;

  通过 import 命令,可将某个 package 内的整个类导入,因此后续的程序代码便不 用再写上被访问package 的名称了。

  举一个范例来说明 import 命令的用法。此范例与 TestPackage1 类似,只是将两个 类分别放在不同的包中:

  填写下面表单即可预约申请免费试听java课程!害怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

  范例:Person.java

  01 package demo.java.a

  02

  03 public class Person

  04 {

  05 public String talk()

  06 {

  07 return "Person —— >> talk()"

  08 }

  09 }

  程序说明:

  程序第 1 行声明一个 demo.java.a 的包,将 Person 类放入此包之中。

  范例:TestPackage2.java

  01 package demo.java.b

  02 import demo.java.a.Person

  03

  04 class TestPackage2

  05 {

  06 public static void main(String[] args)

  07 {

  08 System.out.println(new Person().talk())

  09 }

  10 }

  输出结果:

  Person —— >> talk()

  程序说明:

  1、 程序第 1 行声明一个 demo.java.b 包,将 TestPackage2 类放入此包之中。

  2、 程序第 2 行使用 import 语句,将 demo.java.a 包中的 Person 类导入到此包之中。

  注意: 可以将第 2 行的 import demo.java.a.Person 改成 import demo.java.a.*,表示导 入包中的所有类,另外需要告诉读者的是,在 java 中有这样的规定:导入全部 类或是导入指定的类,对于程序的性能是没有影响的,所以在开发中可以直接写 导入全部类会比较方便。

  另外,TestPackage2.java 程序也可以写成如下形式:

  范例:TestPackage3.java

  01 package demo.java.b

  02

  03 class TestPackage3

  04 {

  05 public static void main(String[] args)

  06 {

  07 System.out.println(new demo.java.a.Person().talk())

  08 }

  09 }

  可以发现在 TestPackage3.java 程序中并没有使用 import 语句,但是在程序第 7 行 使用 Person 类的时候使用了“包名.类名”的方式使用了 Person 类,所以在程序中也 可以使用此方法来使用非本类所在的包中的类。

  三、JDK 中常见的包

  SUN 公司在 JDK 中为程序开发者提供了各种实用类,这些类按功能不同分别被 放入了不同的包中,供开发者使用,下面简要介绍其中最常用的几个包:

  1、 java.lang — 包含一些 Java 语言的核心类,如 String、Math、Integer、System 和 Thread,提供常用功能。在 java.lang 包中还有一个子包:java.lang.reflect 用于实现 java 类的反射机制。

  2、 java.awt — 包含了构成抽象窗口工具集(abstract window toolkits)的多个类, 这些类被用来构建和管理应用程序的图形用户界面(GUI)。

  3、 javax.swing — 此包用于建立图形用户界面,此包中的组件相对于 java.awt 包而言是轻量级组件。

  4、 java.applet — 包含 applet 运行所需的一些类。

  5、 java.net — 包含执行与网络相关的操作的类。

  6、 java.io — 包含能提供多种输入/输出功能的类。

  7、 java.util — 包含一些实用工具类,如定义系统特性、与日期日历相关的函数。

  注意:java1.2 以后的版本中,java.lang 这个包会自动被导入,对于其中的类,不 需要使用 import 语句来做导入了,如前面经常使用的 System 类。

分享到

相关资讯