前言:众所周知java是一款面向对象(答辩)的编程语言,所以学好面向对象是必不可少的。不继续赘述废话,开始上课。
目录:
●封装的概念
1.1 封装的含义
▲封装就是一种设计思想(高内聚,低耦合)
见名知意,封装就是将某种东西”包装起来“/”隐藏起来”。假如我现在要用洗衣机,只需要按一下开关就可以使用了,不需要将洗衣机内的电动机,定时器,传动部件..都了解清楚,因为这些东西都被”包装” 了起来。只需要调用者(我们)启动开关。
程序中,我们要做的是将操作细节写完后进行封装,然后让调用者调用。
程序中我们通常将属性和方法进行封装
Ps:这么说可能对于小伙伴们来说太抽象了对吧?没关系,接下来两个例子让你更好的理解
例子一:封装方法
坚持看完的你是不是觉得渐渐清晰了?没错,封装起来的排序细节可以理解为洗衣机的”传动机部件”。调用者只负责按下按钮,也就是调用该功能就可以了。
例子二:封装(隐藏)属性
配合四种权限修饰符来做到封装隐藏,不懂的伙伴可以跳过,后文封装的体现会解答
1.2封装的作用
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装的设计思想
1.3封装的要求
我们程序设计追求”高内聚,低耦合”
->高内聚:类的内部数据操作细节自己完成,不允许外部干涉
->低耦合:仅对外部暴露少量的方法用于使用
●封装的体现
2.1 get、set方法和封装
①get、set方法是java内的必备方法,你必须掌握。我们将类的属性xxx私有化(private)。同时,提供公共的(public)方法来获取(getXxx)和设置(setXxx)此属性的值。
补充:为属性赋值有三种方法:①显式赋值 ②set方法赋值 ③构造器赋值(参考上篇类和对象文章)
私有化属性后只有第一种赋值会失效,但是在私有化属性当前的类中中还是可以显式赋值。
②语法格式:
权限修饰符+返回值类型+方法名(形参列表)
- public void setXxx(形参列表){}
- public String getXxx(){return XXX;}
例子一:
//调用者通过set方法成功为私有化属性赋值了,弥补了上文不能显示赋值的方式。
③set get获取
- 手打(初学建议) 初学的话按照语法格式好好打
- 通过编译器快捷键生成(熟悉后建议) -->Idea和Eclipse
IDEA编译器的步骤:1、按下快捷键alt+insert 2、选中getter和setter
Eclipse:①从工具栏中找到Source ②点击Generate getters and setters
2.2拓展 封装性在其他方面的体现
封装的体现:①如上 ②不对外暴露的私有的方法 ③单例模式……
单例模式(感兴趣的伙伴可以了解下,后面也会详细介绍)
目的:只生成一个实例(对象),减少系统开销的一种设计模式
两种实现方式:
一、饿汉式
二、懒汉式
●权限修饰符
3.1权限修饰符的介绍
- Java规定的4种权限(从小到大排列):private、缺省/默认(就是空着不写)、protected、public
- 4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
- 具体的,4种权限都可以用来修饰类的内部结构(类的成员):属性、方法、构造器、内部类 修饰类的话,只能用:缺省、public
Java提供了4种权限修饰符来修饰类及类的内部结构,体现类的及类的内部结构再被调用时的可见性大小 -->也可以看做封装性的总结
3.2权限修饰符的可见性
3.3权限修饰符补充细节:
①如果多个类在同一个java文件中,只能出现一个public的类哦
②权限修饰符不能修饰局部变量(回顾上章类和对象)
4、拓展:Javabean的概念
其实这个概念只要稍微了解一下就好,所以并没有纳入目录
4.1Javabean的定义
一个Java类满足以下2点 ,就可以称为JavaBean:
public 修饰的类 ,public 无参构造器(回顾上章类和对象)
所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get 可以替换成is)
4.2Javabean的分类
①封装数据的Javabean
这种JavaBean也被叫做实体类,一般来说对应的是数据库中的一张表,如下
如上对应的表:
②封装逻辑的Javabean
这种JavaBean用于实现业务逻辑。目的是为了提高代码的复用和解耦
例如:设计一个管理系统,为其提供util工具类,代码如下
我趣我写的学生管理系统工具类找不到了,下次再讲吧,抱歉抱歉
封装性的总结:Java提供了4种权限修饰符来修饰类及类的内部结构,体现类的及类的内部结构再被调用时的可见性大小。
封装的内容结束啦,如果觉得这篇文章没啥用,对你一点帮助都没有,
那就转发给你那些爱学习的同学和朋友八~
点赞什么的都不重要!!