写点什么

java 零基础入门 - 封装

作者:喵手
  • 2022 年 7 月 11 日
  • 本文字数:2321 字

    阅读完需:约 8 分钟

java零基础入门-封装

哈喽,各位小伙伴们好,我是喵手。

今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学 习,互相学习,才能成长的更快,对吧。

我是一名 java 开发,所以日常接触到最多的就是 java 啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

       小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、概述

       论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

二、前言

       谈起面向对面编程,我们都知道有三大特征【封装、继承、多态】,跟随我一起学习的小伙伴都知道,对于三大特征的后两种,我们在前两期已经讲过了,至于我为啥没有按照特征顺序来教学,是因为我常不按规律出牌啊,因为对于前者而言,后者更关键,要想把 java 基础学好,面向对象编程,这三种特性是必经之路。

       而今天我就要把该三特性之一的封装也给大家讲掉,这样我们该三大特性就讲全啦。

       好的,废话不多说,教学这就开讲。

三、本期教学目标

  • 封装概念

  • 封装优缺点

  • 封装有何作用

  • 实现封装的步骤

  • 示例

四、正文

1️⃣概念

       问大家个问题,何为封装(Encapsulation)?在程序里封装指的是一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。用通俗的话来讲就是把一个东西,关到一个密闭的房间里(没有任何出口,全密闭除了门),只留个门供外界通行。

       如下,我给大家画个示意图,简单意思一下。

       封装就可以被认为是一道屏障,为了防止该类的代码和数据被外界的方法或者类所随机访问,想要访问该类的方法或属性,就必须通过严格的接口控制。

       其实封装,最主要的功能就是降低耦合,我们只需要修改自己实现的代码,而不用去修改那些调用的封装好的方法,这不仅减低了耦合而且也更易于维护,比如代码报错,我们可以压根不需要去定位封装方法是否有问题,而只需要去检查自己写的那部分是否有问题,毕竟封装的方法都是需要经过书写 testcase 进行一定测试的,否则怎么能够供所有人使用呢?就比如工具类。

2️⃣优缺点

       说起封装,肯定会有它的优缺点,封装的缺点嘛?不利于开发测试,debug,没办法深入读每一个类,不利于调试。

       说起优点。就相对比较多了,比如降低代码的耦合度,隐藏代码的实现细节,内部类可自由修改,也大大提升了其可运维性。

3️⃣作用

       说起封装,我们可以来谈谈,封装可以做啥,为何这么推崇注重程序开发一定要有运用封装的思想,其实啊,这是有目的的,具体如下:

  1. 有效减少代码耦合度。

  2. 为了隐藏代码的实现细节(毕竟对于一个方法,我只想调用方法达到目的,而没必要在该调用逻辑里也一并实现它)。

  3. 类内部结构可自由修改。

  4. 提升系统的可维护性。

4️⃣实现步骤

       在程序设置过程中,讲究“高内聚,低耦合”,一切都按此目的而为。而封装正式利于此目的的发展。如下我举两个例子,通过封装的思想来实现表述其的优点。

       通常我们会禁止直接访问一个对象,而是通过操作接口的形式来访问来做到信息隐藏。比如设置属性私有,具体如何设置请看如下:

5️⃣示例

@Datapublic class Animal {//父类
private String type; private String name; private String color;
public void eat() { System.out.println("我是父类,吃东西!"); }}
复制代码

那我们要调用 Animal 类,我们就应该创建一个 Animal 对象,通过对象点(animal.xxx)来获取其属性或者方法,具体演示如下:

总而言之,我们就可以看到,在这段代码中,将 type、name、color 三属性设置为私有的(private),也就只能 Animal 本类才能访问,其他类都访问不了,如此就对信息实现了很好的隐藏作用;

然后外界想访问其 Animal 类的属性,也就得提供给调用者赋值取值的方法,用于对私有属性的访问。如上我是直接使用了 @Data 注解(自动添加构造方法和 get/set 等方法),如下我将手动给大家演示一下,手动创建 get set 方法(其实生成 get set 方法添加也是有快捷键,alt+insert 组合键,然后选择 Getter and Setter 即可):

 public String getType() {        return type;    }
public void setType(String type) { this.type = type; }
复制代码

       点击并拖拽以移动如上对 set 方法采用 this 关键字,其实是为了解决实例变量(private String type)和局部变量(setType(String type)中的 type 变量)之间发生的同名冲突。

​​​... ...

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

五、文末

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------


发布于: 刚刚阅读数: 5
用户头像

喵手

关注

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
java零基础入门-封装_Java_喵手_InfoQ写作社区