一、package 包 本质就是几千行代码的类文件,为了提高可读性,拆分到一个包里
为了更好的实现项目中类的管理,Java提供了包的概念,包。
说明:
1、功能上,可以将一个包想象成一个超级大的类文件,有几千行代码。既然在一个文件中,自然包里面的类不允许重名。
2、文件结构上,包可以类比为工程目录下装java文件的文件夹。
3、Java源文件(类)放在 src/..n层包路径/
说明:同一工程的不同package下,允许相同类文件名。比如包1下有个Attack.java。 包2下,也可以有Attack.java。 但是,如果正在编写哪个类(比如Boss类)想同时调用包1,和包2 的Attack类,这下就重名了。因此在Boss类中,就必须要把Attack类写全,即给Attack类加上包名(包2.Attack 变量)。
注意:包 和 此包的子包 是完全独立的两个包,子包完全是为了方便管理才放在包下。导入某个包的所有类,不会影响这个包子包里面的类。子包又可以想象成一个子包自己的超级大类文件,有几千行代码。
包的使用语法:
package 包路径; //包路径从工程的src开始往下
说明:
1、package声明类或接口所属的包,声明在源文件的首行。
2、包,属于标识符,遵循标识符的命名规则和命名规范,做到“见名知意”
3、每“.”一次,就代表一层文件目录。
4、同一个包下,不能命名同名的接口、类。(其他文件调用,编译器会混)
扩展:工程下包的分配规则(程序设计模式 以MVC为例)
如果随心所欲给包取名字,遇到大项目,包多了,管理会非常混乱。因此出现了一些规范来帮助管理包,按照规范来命名包,就会很好的管理工程。
一般所有源码都放在src文件夹下。在src文件夹下,再按照程序设计模式来命名各种包。把java源文件(各种类),放在相应的包下。
MVC设计模式概述MVC是常用的设计模式之一,将整个程序分为三个层次:视图模型层,控制器层,与数据模型层。这种将程序输入输出、数据处理,以及数据的展示分离开来的设计模式吏程序结构变的灵活而且清晰,同时也描述了程序各个对象间的通信方式,降低了程序的耦合性。
1、模型层 model 主要处理数据
模型层package路径规范:
数据对象封装 model.bean/domain
数据库操作类 model.dao
数据库 model.db
1.2控制层 controller处理业务逻辑
控制层package路径规范:
应用界面相关 controller.activity
存放fragment controller.fragment
显示列表的适配器 controller.adapter
服务相关的 controller.service
抽取基类 controller.base
1.3 视图层 view 显示数据
视图层package路径规范:
相关工具类 view.utils
自定义view view.ui
二、import 导入类或接口
如果想在一个类中使用其他包里面的类或接口,首先需要导入类。
说明:java核心包里面的类,不用导入也可以使用。比如java.lang包下的String,Scanner都可以直接用。
注意:如果没有类的使用权限(比如想导入的类用了private封装),导入过来也没法用。
导入方法:
import关键字可以导入指定包下的类、接口
语法: import 类路径; //类路径就是包路径+类文件 路径从工程src文件夹的包开始
import 包路径.*; //如果需要用某个包里面的大多数类,可以通过*一次性将包里面的公共类导入完
特别: import static 包路径.* //导入指定类或接口中的静态结构:即类的static 属性或方法。 导入后的效果就是,可以直接用导入类的属性或方法,不用再写类名.属性(方法)。(极少使用,了解即可)
特别注意:*只导入包里面的类,包里面还有子包,子包里面的类没有导入。
说明:
1、import声明 在 包的声明 和 类的声明 之间
2、如果在源文件中,使用了不同包下的同名类,则必须至少有一个类需要以全类名的方式显示。
全类名:包路径.类名 //其实就是类路径
3、import的是导入类、接口。 import static是导入属性或方法。
exp:import static java.lang.Math.*; //导入以后,就不用写 Math.round()了,直接round(),就可以了
import static java.lang.System.* //导入以后,就不用写System.out.println(),直接out.println()就可以了。