面向对象
三大特性:封装、继承、多态
打包(package)
- 打包为了信息归类,有规律的区分代码。
- 将相关联或者是功能类似的源代码文件放在同一个包中。
- 为了更好的维护代码。解决我们源代码文件名字冲突问题。
- 不同的包中可以有同名的class文件。
- 包:在系统就是文件,项目中叫包。
- 提高了代码的复用性,利于后期维护。
java源码中的包
- java.util:都是工具,键盘输入工具,随机数工具,操作数组的工具
- java.lang:String,默认lang已经引入
- java.io:放置io流。网站下载上传,保存到电脑,从系统读取文件
- java.awt:图形化界面类
使用其他包
-
import 包名.类名:引入其他包下的某个类,然后才可以使用。java默认已经在所有的源码文件中引入了java.lang包
-
import 包名.*:引入这个包下的所有的类。当我们使用这个包下的类超过3至5个的时候,可以全部引入
-
jdk1.5新增了一个功能,静态引入,import static 包名.Arrays.成员
创建包
- 新建项目
- 在src目录下,new—>package–>其名字
- 起名规则:一般情况下是公司的域名倒置(www.iotek.com)
- 我们起,com.iotek.分包
- 层数:最少三层
- 手动创建:
- 先创建对应文件夹
- 写类的时候,包信息一定要在第一行,package 包。
- 其他包的中类需要引入,引入的代码一般写在包信息后面
- 常用包
- entity:实体类,类似数据类,比如Student,User
- dao:放置实体类对应增删改查的类,比如查询学生,添加学生,删除用户等
- service:放置逻辑代码的,就是具体的功能代码,比如登录功能,注册功能,充值功能等
- controller:放置servlet代码的,就是前后端进行交互的
- util:放置一些临时的工具代码的,比如处理时间转换。排序,打印等等的代码。
- test:放置测试类的。
封装
概念:
- 面向对象的三大特性之一,是面向对象对于客观世界模拟。在一个类中定义的方法和属性(字段),包装在一个单元中。单元以类的形式展现。将信息隐藏在类中。不让外部直接访问。将实现细节隐藏,这就是封装。结果就是一个同时带有特征和行为的数据类型。
- 定义类,定义属性、方法的过程称为封装一个类。
- 抽象:去掉不关注的信息,只定义我们所关注的信息。
- 打包:将我们关注的信息保留实现封装
- 封装:就是将这些保留的信息放在一个类中,隐藏实现细节,不让外部直接访问。
原因
- 对类或者代码的修改、维护操作,不影响外部的使用。
- 防止外部意外修改/恶意修改。
- 有助于后期维护,降低代码直接的关联性。
实现封装
- 四种访问修饰符:public>protected>不写>private
- public:公开的。所有的类都可以直接访问。整个项目中,只要有对象,就可以直接进行访问。
- protected:受保护的。只有在同包或者不同包下的子类可以访问到(待定)。
- 不写:默认,只有在同一个包下才可以直接访问。
- private:私有,只能在自己类里面使用。
选取
- 对于属性来说:能私有的一律私有,除非有特殊要求。
- 对于方法来说:一般是公开。除非有特殊要求的安装要求来。如果有一个方法,只有自己才会用到,其他都不会用。私有,私有的方法我们也叫临时。
setter&getter方法
- 当我们的属性全部私有以后,外部不能直接访问了
- 那我们外部创建好对象以后,需要访问属性,怎么办呢,我们就可以提供公开的访问属性的方法。
- 每个属性都有。setter方法用来修改/赋值。getter用来获取
- 创建一个Student,属性ID,姓名,年龄,分数。
构造方法
- 构造方法也叫构造函数也有叫构造器
- 用来创建对象,进行属性初始化
- 语法:访问修饰符+类名(参数)
- 与普通方法不同的是没有返回值,不写返回值类型
- 如果我们没写的话,JVM会自动给我们补上一个无参的构造函数,如果写了任何一个构造,JVM将不再补充
- 我们的选择:
- 按照需求来,需要几个参数就写几个,不用纠结,如果碰到没有写的参数,可以通过setter方法赋值,用到了没有再加
- 一般如果你写了有参的构造,无参的最好加上。(继承中,子类会默认第一行调用父类无参的构造,如果没写,报错)
- 主要方便我们属性初始化。如果没有,老老实实进行setter赋值也行。
- 如果有需求,不想让别的类创建你这个对象,那么你需要写私有的构造函数,一般都公开
- 构造方法作用类似于setter方法,就是方便我们在创建对象的同时批量的对属性进行初始化。
this
- this是一个关键字,不仅仅是一个关键字
- this主要用在类中,用在普通方法中,代表当前对象。
- 用在构造方法中,代表其他构造方法,但是,只能放在构造中的第一行。所以只能放一个,如果放两个或者以上,必然有一个或多个不在第一行,报错。
- 在普通方法中用法,this等同于对象。实际上所指向的就是当前对象的地址。
- 一个类中国多个构造,实际就是构造方法的重载。
- 一个是代表就是当前对象的引用。
- 主要当方法的参数与属性同名的时候,为了区分参数和属性。