美国上市公司,专注Java培训21年

Java编程里的包及访问权限


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 类似,只是将两个 类分别放在不同的包中:

【编程里的包及访问权限】

范例: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、 # — 包含执行与网络相关的操作的类。

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

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

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


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java培训班Java集合类知识集锦
    Java培训班Java集合类知识集锦
    企业对于Java集合类的使用都比较看重,而有的同学在这方面还真的是所知甚少,抽空也学习学习吧。 详情>>

    2017-02-23

  • Java泛型基础教程-java培训机构
    Java泛型基础教程-java培训机构
    今天java培训机构使用一种最简单的形式来总结一下程序员需要知道的关于Java泛型的最基本的知识。​ 详情>>

    2016-12-20

  • java基础轻松入门【就是这么简单】
    java基础轻松入门【就是这么简单】
    java常用语,轻松入门就是这么简单 详情>>

    2016-11-24

  • java语言的图案为什么是咖啡杯
    java语言的图案为什么是咖啡杯
    JAVA的图案为什么是咖啡? 详情>>

    2016-11-18

  • Java开班时间

    收起