没有合适的资源?快使用搜索试试~ 我知道了~
面向对象(基础)特征一:封装性(encapsulation)
需积分: 5 0 下载量 81 浏览量
2023-10-23
00:34:00
上传
评论
收藏 1.02MB PDF 举报
温馨提示
试读
23页
面向对象(基础)特征一:封装性(encapsulation)
资源推荐
资源详情
资源评论
一、介绍
(1)封装性
(2)权限修饰符
二、案例
(1)案例1
三、练习
(1)练习1
(2)练习2
(3)练习3
(4)练习4
面向对象特征之一:封装性
一、介绍
(1)封装性
1. 为什么需要封装性?
我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有
必要碰电动机吗?
我要开车,我不需要懂离合、油门、制动等原理和维修也可以驾驶。
随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原
则要 遵循“ 高内聚、低耦合 ”。 高内聚、低耦合是软件工程中的概念,也是UNIX 操作系统设计的经典原
则。
内聚,指一个模块内各个元素彼此结合的紧密程度;耦合指一个软件结构内不同模块之间互连
程度的度量。内聚意味着重用和独立,耦合意味着多米诺效应牵一发动全身。
内聚:把特定的内容封装到不同的类里面,把类里面特定的功能封装到不同的方法当中。
耦合:相互之间要调用的时候,只对外暴露需要用的,不需要使用的细节就不对外暴露了。
理论上:
高内聚 :类的内部数据操作细节自己完成,不允许外部干涉;
低耦合 :仅暴露少量的方法给外部使用,尽量方便外部调用。
所谓封装,就是把客观事物封装成抽象概念的类,并且类可以把自己的数据和方法只向可信的类或
者对 象开放,向没必要开放的类或者对象隐藏信息。
通俗的说:把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。
(2)权限修饰符
2. 如何实现数据封装?
2.1 权限修饰符
Java规定了4种权限修饰,分别是: private 、 缺省 、 protected 、 public
2.2 作用
我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大
小。
类:只能使用 public 、 缺省 修饰
类的内部成员:可以使用 4种权限修饰 进行修饰。
比如,这里的类用的是“ 缺省 ”:
这个类用的是“ public ”:
class Animal{ //动物
}
但是使用“ private ”就不行,比如:
private修饰的是类的内部文件,此时AA就是一个类,它对自己可见,而且外边用不了,没有
什么作用。
protected也一样,修饰的属性让子类的类能够看到,主要指的是成员,类自己加没有什么意
义。
目前写的类是并列关系,都叫外部类,比如下面的AnimalTest类和Animal类:
若在Animal类里面再写一个类,这个类就是内部类,内部类可以被四种权限修饰。(后边再
说,不着急)
2.3 开发中4种权限使用频率的情况:
比较高:public、private
比较低:缺省、protected
3. 封装性的体现
场景1:私有化(private)类的属性,提供公共(public)的get和set方法,对此属性进行获取或修
改
场景2:将类中不需要对外暴露的方法,设置为private.
public class AnimalTest {
public static void main(String[] args) {
Animal animal1=new Animal();
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal animal1=new Animal();
}
}
class Animal{ //动物
}
场景3:单例模式中构造器private的了,避免在类的外部创建实例。(放到static关键字后
讲)
二、案例
(1)案例1
看下面的代码:
执行结果
⚡
注意
不能直接在Animal类中写这种语句: System.out.println("动物");
package yuyi.exer01.exe01;
/**
* ClassName: AnimalTest
* Package: yuyi.exer01.exe01
* Description:
*
* @Author 雨翼轻尘
* @Create 2023/10/22 0022 13:29
*/
public class AnimalTest {
public static void main(String[] args) {
Animal animal1=new Animal();
animal1.name="金蟾";
animal1.legs=4;
System.out.println("name="+animal1.name+",legs="+animal1.legs);
animal1.eat();
}
}
class Animal{ //动物
//属性
String name; //名字
int legs; //腿的个数
//方法
public void eat(){
System.out.println("动物觅食");
}
}
剩余22页未读,继续阅读
资源评论
雨翼轻尘
- 粉丝: 6w+
- 资源: 130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Matlab基于遗传算法的车辆充电调度系统matlab完整源码+项目说明+详细代码注释+答辩PPT.zip
- 基于MovieLens数据集的协同过滤算法尝试+源代码+文档说明
- 基于SpringBoot+Mybatis的音乐网站,基于mahout的协同过滤算法进行歌曲推荐,支付宝沙箱模拟支付+源代码+说明
- 无卡运行 维宏NCstudio V5.4.68雕刻机仿真
- 算法设计 - 排序、动态规划、数学问题 - 实用编程资源合集
- Rust异步请求,详细描述了异步是怎么实现的
- 流体力学+环境生物学+仪器分析+环境监测:大二下 复习指南-上交
- 详细描述了Object-C中的内存管理,超级简单
- 详细描述了Kotlin和Android的统合
- 水污染控制工程+环境化学-生物环境化学+大气污染控制工程-上交
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功