博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解Java包
阅读量:6658 次
发布时间:2019-06-25

本文共 1381 字,大约阅读时间需要 4 分钟。

  本质上,包是一个唯一命名的类的集合,将类集合到包里面的主要原因,是为了当在应用程序中使用预先编写的类时避免与类自身可能引起的明明冲突。用于包中的类名不会妨碍另一个包或程序中的类名,因为此时,包中的类名都是通过报名加以限定的。举个栗子!٩(๑>◡<๑)۶,java.lang包中有个String类,但是假如我们自己恰好也定义了一个String类,那么我们在使用String名称的时候,会默认指向我们定义的类,此时若想继续使用java.lang里面的String类,就可以在代码中使用全名java.lang.String来调用同名的库类。

  【1】类打包

   简而言之,只要在类文件定义之前添加一条包语句“package <包名>”即可,且添加public关键字的类可在包外访问,不添加public的只能为包内方法访问,此外,所有包括到特定包名中的类文件必须放到包名所在目录里面。(注:如果想要构造的函数和方法能够从包的外部被访问,那么还需要在类中将他们声明为public)

  【2】包与目录结构

  包与存储他们的目录结构密切相关,一般来说,可以使用任意多用点号隔开的名称来定义包,但是包名必须能够反应用来存储这个包的目录结构。举个栗子:将名称为stu的类定义文件加上package A.a1,其结果是stu包含在A目录的子目录a1里面,最典型的是String类包含在java.lang包里面。

  【3】访问包

  在编译使用包的程序的时候,访问包的方法取决于包的存放位置,这里有两个选择,第一:是将包中类的.class文件和其源程序.java放在同一个以包名命名的那个目录下。第二:在编译程序的命令行中使用-classpath选项,因为这样只是短暂性地设置classpath而不会妨碍后续任何任务。举个栗子:

  javac -classpath "<包含类定义的包的绝对路径>" *.java

  事实上,后者是应用最广泛的一种,即在JDK里面,我们在执行java解释器时候总是能用-classpath选项来设置包的位置,这样的优点是该命令只对当前编译或者执行起作用,所以很容易在每一次运行时进行设置。

  【4】将类从包添加到程序中

  在编写的程序中,首部添加语句“import <包名>.*”,包名后面跟随的点号之后的通配符*表示选择包中的所有类,而不是选择目录下的所有文件。此时只使用类名就可以引用包中的任何公有类,但是!导入包中的所有的名称不应该是通常的做法,因为这和我们将类导入包中的最主要的目标相违背,因此只要显式地导入程序需要引用的名称。举个栗子:

  import <包名>.<类名>;

  确保了源文件里面只包含所需要的类,减少了与自己定义的类的名称发生冲突的可能性。这样的方法同样适用于从类中导入静态成员,例如使用圆周率π的时候,不使用Math.PI,取而代之的是语句“import static java.lang.Math.*;”,该语句可以导入Math类中所有的静态成员。

  【5】标准类

  

  (图片来源于:http://blog.csdn.net/zccst/article/details/5070334)

 

转载于:https://www.cnblogs.com/hesetone/p/7630300.html

你可能感兴趣的文章
我的友情链接
查看>>
为什么要用redux?component自身管理自己的state难道不更解耦吗?
查看>>
HDU1114 Piggy-Bank
查看>>
FTPS(下)
查看>>
一个合格的运维工程师应该具有的素质
查看>>
字符串与 集合
查看>>
sort algorithm
查看>>
第 三 十 三 天:shell 编 程 之 监 控 脚 本
查看>>
玩转开放式虚拟格式ovf
查看>>
忘记的五笔输入
查看>>
xgboost 多gpu支持 编译
查看>>
ImportError: No module named extern;
查看>>
PDF如何添加页眉页脚?PDF添加页眉页脚的小技巧
查看>>
关于mysql的错误 - no query specified
查看>>
悲催的三天
查看>>
bll
查看>>
su身份切换梳理
查看>>
pxe实现自动安装
查看>>
C# Parellel.For 和 Parallel.ForEach
查看>>
php函数nl2br的反函数br2nl 将html中的br换行符转换为文本输入中的换行符
查看>>