8.封装
MODULE 8 封装
1.要回使用private关键字修饰成员,并知道被private修饰之后的作用(访问特点)是什么
2.会使用set方法为属性赋值,使用get方法获取属性值
3.会利用this关键字区分重名的成员变量和局部变量
4.会利用空参构造创建对象,并知道空参构造作用
5.会使用有构造创建对象,并为属性赋值
6.会快速生成一个标准的javabean类
一、封装
将一个物品封装起来,外界不能直接使用了,提高了物品的安全性
(一)封装的介绍以及使用
1.面向对象三大特征:封装 继承 多态
2.什么是封装思想:
(1)(洗衣机)(使用洗衣机功能的过程就是在使用面向对象思想编程的过程) (细节被封装到按钮里面了->封装)我们没必要了解内部结构,只知道调 用就可以了
(2)隐藏对象内部的复杂性,只对外公开,公共的接口,便于外界调用,从 而提高了系统的可扩展性,可维护性,安全性,通俗来说,把该隐藏的隐 藏起来(细节),把该暴露的暴露出来(对外提供的供别人使用的接口), 这就是封装思想
(3)将细节隐藏起来,不让外界随便使用,但是我们可以提供一个公共的接 口让外界间接使用隐藏起来的细节->封装思想
3.问题:
定义成员变量,只要是new出来对象,就可以随便调用,随便赋值,哪怕是 不合理的值,所以需要将属性封装起来(隐藏细节)
(1)关键字:private(私有化的) -> 被private修饰的成员只能在本内中 使用,在别的内中使用不了
(2)注意:
将代码放到一个方法中,也是封装的体现
一个成员被private修饰也是封装的体现,只不过private最具代表
(3)private的使用:
修饰成员变量:private 数据类型 变量名
修饰方法:将public改成private,其他都一样
属性被私有化了,外界直接调用不了,那么此时属性就不能直接赋值取值了, 所以需要提供公共的接口get/set方法
set方法:为属性赋值
get方法:获取赋值
小结:
用privat将属性封装起来,外界不能直接调用,保护了属性
对外提供一套公共的接口(set/get方法),让外界通过公共的接口间接使用 封装起来的属性
(二)this关键字
1.如果成员变量和局部变量重名时,我们选择就近原则,先访问局部变量
2.this概述:代表的是当前对象
3.作用:this可以区分重名的成员变量和局部变量
this点出来的一定是成员变量
4.this代表当前对象?
那个对象调用的this所在的方法,this就代表哪个对象
(三)构造方法
1.概述:方法名和类名一致并且能初始化对象的方法
2.分类:
(1)无参构造:没有参数
(2)有参构造:有参数,参数是为指定的属性赋值
(3)满参构造:给所有属性赋值
3.特点:
(1)方法名和类名一致
(2)没有返回值,连void都没有
4.空参构造:
(1)格式:
public 类名(){
}
(2)作用:new对象使用
(3)特点:每个类中默认都有一个无参构造,不写也行,jvm会自动提供
(4)使用:new的时候就是在调用构造方法
5.有参构造:
(1)格式:
public 类名(形参){
为属性赋值
}
(2)作用:
A.new对象
B.为属性赋值
(3)特点:
jvm不会自动提供有参构造,但是将有参构造手写出来,jvm不再提 供无参构造,所以建议有参,无参构造都手写上去
(四)标准JavaBean
要求:
(1)类必须是具体的(非抽象 abstract)和非公开的,public class类名
(2)并且具有无参数的构造方法,有参构造
(3)成员变量私有化,并提供用来操作成员变量的set和get方法
com.shujia.controllar -> 专门放和页面打交道的类(表现层)
com.shujia.service -> 专门放业务处理的类(业务层)
com.shujia.dao -> 专门放和数据库打交道的类(持久层)
com.shujia.pojo -> 专门放javabean类
com.shujia.utils -> 专门放工具类
小结:
1.知道private的作用嘛?私有的,别的类不能直接调用
2.知道空参构造作用嘛?new对象
3.知道有参构造作用嘛?new对象 为属性的赋值
4.知道set方法作用嘛?为属性赋值
5.知道get方法作用嘛?获取属性值
6.知道this作用嘛?区分重名的成员变量和局部变量
7.知道快捷键生成标准JavaBean嘛?alt+insert
(五)JB怎么来的
1.将来的javabean都是和数据库的表相关联
(1)类名 -> 表名
(2)属性名 -> 列名
(3)对象 -> 表中每一行数据
(4)属性值 -> 表中单元格中的数据
将页面填写的数据获取到,封装到javabean中,一层一层传递到dao层,然 后将javabean中的属性值获取出来放到表中保存 -> 相当于是一个添加功能
将所有的数据查询出来,封装成一个一个的javabean对象,然后将封装好的 javabean对象放到一个容器中,将此容器返回给页面,在页面上遍历显示