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课程!害怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
预约申请免费听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 类。