day12_面向对象的三大特征之一(封装)

news/2025/2/22 18:07:07/

封装概述​​​​​​​

为什么需要封装?

  • 现实生活中,每一个个体与个体之间是有边界的,每一个团体与团体之间是有边界的,而同一个个体、团体内部的信息是互通的,只是对外有所隐瞒。例如:我们使用的电脑,内部有CPU、硬盘、键盘、鼠标等等,每一个部件通过某种连接方式一起工作,但是各个部件之间又是独立的。

面向对象编程语言是对客观世界的模拟,客观世界里每一个事物的内部信息都是隐藏在对象内部的,外界无法直接操作和修改,只能通过指定的方式进行访问和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”,而“高内聚,低耦合”的体现之一:

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;

  • 低耦合:仅对外暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

如何实现封装呢?

通俗的讲,封装就是把该隐藏的隐藏起来,该暴露的暴露出来。那么暴露的程度如何控制呢?就是依赖访问控制修饰符,也称为权限修饰符来控制。访问控制修饰符来控制相应的可见边界,边界有如下:

  • 子类
  • 模块:Java9之后引入

在Java中 权限修饰符 如下所示:

外部类,我们只能使用public和缺省来修饰

成员变量、成员方法、构造器、成员内部类,我们可以使用任意的其中一种修饰符

注意事项:

protected修饰非静态成员,跨包时,只能在子类的非静态成员中访问,在静态成员中无论是否创建对象都不能访问

成员变量(属性)封装

好处:

  • 隐藏类的实现细节
  • 让使用者只能通过事先预定的方法来访问数据,从而可以在该方法里面加入控制逻辑,限制对成员变量的不合理访问。还可以进行数据检查,从而有利于保证对象信息的完整性。
  • 便于修改,提高代码的可维护性。主要说的是隐藏的部分,在内部修改了,如果其对外可以的访问方式不变的话,外部根本感觉不到它的修改。例如:Java8->Java9,String从char[]转为byte[]内部实现,而对外的方法不变,我们使用者根本感觉不到它内部的修改。

成员变量也称为属性(property),我们对成员变量的封装也称之为对属性的封装。具体步骤如下:

1:使用 private 修饰成员变量,格式如下:

代码示例


public class Student {//使用 private 修饰成员变量private String name;
}

 2:提供 getXxx方法 / setXxx 方法,可以访问成员变量代码如下:

public class Student {//使用 private 修饰成员变量private String name;//获取成员变量值的getXxx方法public String getName() {return name;}//设置成员变量值的setXxx方法public void setName(String name) {this.name = name;}}

我们观察上面的代码发现,this出现在其中,但它到底是什么意思了?this代码当前对象,哪个对象调用这个方法,this就代表哪个对象,在这里它主要用来区分同名的成员变量和局部变量。

测试代码

public class Test {public static void main(String[] args) {Student student = new Student();//设置属性的值student.setName("张三");//获取属性的值System.out.println("名字是: " + student.getName());}
}

如何解决局部变量与成员变量同名问题

  • 当局部变量与类变量(静态成员变量)同名时,在类变量前面加“类名.";
  • 当局部变量与实例变量(非静态成员变量)同名时,在实例变量前面加“this.”

当然this还有其他的作用,这个我们以后在说..

总结

把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。封装的思想体现在Java的各个方面,例如:

  • 属性私有化是对属性的封装
  • 方法是对独立功能的封装
  • 包是对类的封装
  • ....

我们可以根据实际需要来使用Java中的封装性


http://www.ppmy.cn/news/509514.html

相关文章

【为什么电脑进入系统卡卡的,开机进入BIOS黑屏,点击键会发出嘟嘟嘟的声音】

首先我们一步一步分析问题: 1.先检查显示器与主机的接线是否可以正常使用。 2.你可能把显示器接到了集成显卡上面了,独立显卡的性能要比集成显卡的性能强大很多,所以会感觉进入系统不太流畅,感觉卡卡的,开个界面都好…

如何关闭 Ubuntu Linux 中的嘟嘟声

在 Ubuntu Linux 默认情况下,PC 喇叭发出的嘟嘟声音警告(System Beep)应用的场合非常普遍。但在 shell 的 tab 补全、vi 的光标移动行首行尾等等情况下,这个嘟嘟声也是很经常响起来,叫嚷的太频繁,难免叫人烦…

如何关闭 Linux 中的嘟嘟声

在 Debian/Ubuntu Linux 默认情况下,PC 喇叭发出的嘟嘟声音警告(System Beep)应用的场合非常普遍。但在 shell 的 tab 补全、vi 的光标移动行首行尾等等情况下,这个嘟嘟声也是很经常响起来,叫嚷的太频繁,难…

Linux关闭嘟嘟嘟的报警声

Linux关闭嘟嘟嘟的报警声 前言 提示:首先在使用vi编辑器、用Tab键补齐命令、shell远程登录操作,时不时会有感叹号的报警声。这个问题并不是Linux系统的问题,而是主机操作系统的问题。 提示:以下是本篇文章正文内容,下…

Linux趣味小游戏,嘟嘟嘟,小火车来了

让我们来学习一下,用Linux制作小火车的运动,嘟嘟嘟。。。 1.上网,打开网络。 2.epel源:配置第三方epel源更新地址 curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 3.yum install sl -y 4.sl …

嘟嘟录音隐私政策

嘟嘟录音隐私政策 尊敬的用户: 您的信任对我们非常重要,我们深知个人信息对您的重要性,我们将按法律法规要求,采取相应安全保护措施,尽力保护您的个人信息安全可控。有鉴于此,嘟嘟录音旗下运营嘟嘟录音服…

【搞笑】打电话--大家都来开心一下。

大家对着程序肯定烦了吧!来开心一刻。呵呵。NO。1。――温柔应对打错的电话――  一日午夜,睡梦中突然――“铃~~铃”电话暴响。“谁这么晚还打电话?”揉揉惺忪 睡眼,黑暗中摸起电话。――“喂,谁呀?” …