Java的包机制
包机制(相当于文件夹,可以分门别类存放不同功能的java文件)
Java 包机制本质上是提供了一种命名机制,是JAVA中文件的一种组织形式。
例如:Windows操作系统的文件夹结构,在java当中,包也相当于文件夹,实际上也起着这个作用,在开发比较大的java项目时,不可能只涉及到一个java文件,不可能把所有的代码都只写在同一个java文件当中,可能要创建几十,甚至几百个java文件,这个时候我们就可以使用包,把相关的java文件放在一起,利用包来方便、快捷、有效的管理这些文件, 包的作用不仅仅是对类的封装管理,包的引用还可以避免命名冲突的问题,在一个庞大系统设计中,无论我们多小心的给类命名,但是设计到成千上万个类之后,对于类名的冲突就不可避免了,特别是我们使用简单的描述性的类名时,不同的程序员设计不同的模块,那么命名冲突更加明显,而在java程序中几乎没有命名冲突的问题,其最大的原因就是包的作用。
包的好处:
方便类型的查找与使用
避免命名冲突
控制访问
可以装入包的类型为:
class、interface、annotation、enumeration
将类型装入包时,最好根据功能进行装包。
如何创建包?
包的创建使用package关键字来定义,package关键字后面跟着包名,也就是包的名字。这里一定要注意,使用package创建包的这条语句,必须放在java源程序的第一行,前面不能有任何可执行代码,当然注释除外。
将类型放入包中
package hello;
public abstract class Hello{
}
note:将Hello放入hello包中。
如果一个类型文件中没有使用package文件,那么这个类位于未命名的默认包中。一般来说,不建议这样做。
包的命名规范
一般来说,使用类时,如果类的名称相同,会产生了冲突。
eg:需要使用Hello类,但是存在两个Hello.java文件。
使用包机制可以解决这种冲突,即同名不同包。
包名一般使用小写字母。
一般利用公司域名倒置作为包名;例如www.baidu.com,包名为:com.baidu.www
公司内部如果发生类命名冲突,可以使用region或项目名,eg:com.example.region.aaa下的Hello类。
使用包内成员
包中包含的类型(eg:class、interface等)被称为包的成员。
跨包访问包内成员时,只有public类型才能被使用。
在使用一个未被import的其他包的成员时,可以通过完整类名来使用这个成员。
eg:aaa.Hello hello = new aaa.Hello();
引用一个外部包内的特定成员时,可以使用import语句。
格式:
import aaa.Hello;
note:引用aaa包下的Hello类型。
ps:import语句放在package语句之后,类型定义语句之前。
ps:使用过import语句之后,在使用引用类型之时就无需使用完整类型名。eg:Hello hello = new Hello():
可以一次性引用一个完整的包,那么这个包下的所有类型全部都可以直接使用。
格式:
import aaa.*;
note:引用完整的aaa包。
ps:引用一个包时,其子包下的类型不会被引入。eg:import aaa.*;不会引入aaa.bbb下的类型。
ps:引用一个可以通过 import aaa.Hello.*;引入定义在Hello中的嵌套类型。
Java的常用包
在开发过程中么我们会经常使用到的一些包,这些包不需要导入就可以使用其中的类
- java.lang包,最基础的包、核心类库。常用类有String、Math、Thread、Object、包装类Integer、Character等,常用接口有Runnable、Iterable、Comparable。
- java.util包,实用工具包。常用类有Arrays、Scanner、Random、HashSet、HashMap、ArrayList、Date等,常用接口有Collection、Set、List等。
- java.io包,提供数据输入输出。常用类有File、FileInputStream、Reader等提供文件、字节输入输出的类。
- java.net****包,为网络连接提供服务。常用类有Socket、ServerSocket、URL等。
- java.sql包,连接数据库的包。要实现jdbc类库。
- java.awt、(javax.awt)包,创建用户界面、绘图的。常用类有Button、Panel、(JButton、JPanel)等。
包的作用:主要是管理java文件,解决同名文件冲突,其实包实际上也是一种访问控制机制,通过包来限制,或者说约束类之间的访问关系。
此学习资料参考于:
https://blog.csdn.net/qq_32165041/article/details/82148629
https://blog.csdn.net/u014080304/article/details/44174733
https://blog.csdn.net/weixin_42149962/article/details/80218165

浙公网安备 33010602011771号