8.封装

news/2024/9/21 20:40:59/文章来源:https://www.cnblogs.com/swh666/p/18395489

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对象放到一个容器中,将此容器返回给页面,在页面上遍历显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792733.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.面向对象(1)

MODULE 9 面向对象1.会定义静态成员以及会调用静态成员2.会使用可变参数(会给可变参数传参)3.会二分查找(手撕)4.会冒泡排序(手撕)5.会debug的使用一、static关键字(一)static的介绍以及基本使用1.概述:static是一个静态关键字2.使用:(1)修饰一个成员变量:stat…

深入了解Vite:依赖预构建原理

前言 前面我们有提到Vite在开发阶段,提倡的是一个no-bundle的理念,不必与webpack那样需要先将整个项目进行打包构建。但是no-bundle的理念只适合源代码部分(我们自己写的代码),vite会将项目中的所有模块分为依赖与源码两部分。 依赖: 指的是一些不会变动的一些模块,如:…

1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件

自我介绍 大家好,我是阿浩,一位后端开发工程师,同时也略懂前端技术。业余时间,我开发了这款小工具——《藏趣云》。 我为什么要写这么个工具 需求来源于我自己,因为我是做开发的。我日常都会使用多款浏览器来测试项目,一次需要登录多个账号,寻找各种测试地址链接。之前因…

02-逻辑概述负判断

https://blog.csdn.net/vviccc/article/details/106694210 来源

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有…

webstorm使用缩写生成自定义注释

/** =========================$END$========================= **/$END$代表生成的时候光标在哪里 date怎么写? date("Y-MM-d HH:mm:ss")

005.MinIO-DirectPV分布式多租户存储部署

MinIO部署准备 部署概述 本实验结合Kubernetes进行MinIO部署,实现MinIO于Kubernetes的融合。 minio官方支持通过简单的快速部署,以便于进行基础测试: curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O kubectl apply -f …

软件工程实践第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 适应在接下来的学习任务中使用博客园进行作业的提交学号 1022011371.个人logo文生图任务设计理念:一望无际的大…

2024秋软件工程课程个人作业(第一次)

2024秋软件工程课程个人作业(第一次)软件工程课程 班级链接作业要求 作业链接作业目标 搭建个人博客,熟练使用AI工具,自我评估并规划未来发展学号 102201312一、个人logo文生图任务使用免费的AIGC图像生成工具为你的Github和博客园账号创建一个独特的个人Logo。推荐工具:DA…