即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Java编程里的包及访问权限

微信 尚学堂java培训 14℃ 0评论

新朋友关注“尚学堂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 类似,只是将两个 类分别放在不同的包中:

图1 包的导入

范例: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 类。


尚学堂Java培训开课时间表

西安校区

Java培训【脱产班】开课时间:2017年02月28日  座中..

Java培训【周末班】开课时间:2017年03月04日  座中.. 

电话:029-62258374  029-62326079

地址:陕西省西安市高新区科技二路西安软件园天泽大厦五楼

郑州校区

Java培训【脱产班】 开课时间:2017年02月28日  抢座中..

电话:0371-58500958

地址:河南省郑州市金水区东风路与文化路交叉南100米

什么是脱产班:

脱产班就是参加工作后再去校内进行学习

一种学习方式。其管理模式与高校普通班

级一样,学习期间完全脱离生产不在原单

位工作,全身心的进行全日制学习。不占

用学生周六和周日的工作时间,对学生有

正常的、相对固定的授课教室和管理要求

,有稳定的寒暑假安排。

一个有用的公众号

尚学堂java培训

     Android

     web前端

     培训基地

长按关注

亲爱的同学们:

      尚学堂java培训开班前有免费试听课程,想学习又不太确定的同学们赶紧联系老师,获取免费试听名额(每个班级的名额是有限的哦,速联速得)。

    获取方式:打开【尚学堂java培训】公众号,点击-精品课程-我要试听-联系老师获取免费试听名额;或直接联系公众号,让“万能”的小编为您解决一切问题!

转载请注明:CodingBlog » Java编程里的包及访问权限

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情