“全栈2019”Java第四十三章:封装

205 阅读4分钟
原文链接: www.toutiao.com

难度

初级

学习时间

30分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

提示

本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。

1.public危机

字段的访问修饰符有四种,分别是public、protected、private、默认的访问修饰符。

其中public是大家经常用到的访问修饰符,下面就拿public举例。

演示:

Student定义年龄字段。访问修饰符为public。

实现:

Student类:

“全栈2019”Java第四十三章:封装

Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

从运行结果来看,准确无误。

接下来,修改Main类:

“全栈2019”Java第四十三章:封装

将年龄设置为-20。

结果:

“全栈2019”Java第四十三章:封装

程序没有发现什么异常,正常运行,首先显示输出的结果是正确的,但是年龄不可能是负数。-20岁就是一个错误的描述。为了解决这一点,肯定得加验证,验证通过才可以赋值,验证不通过不可以赋值,或者小于0的就都置为0,大于200的都置为200。

修改Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

或者修改为以下结果也行:

Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

我们前面的修改都是在Main类中进行,如果还有其他地方用到Student对象,给对象设置年龄的话,那岂不是都要这样来一遍?为什么我们不在源头上控制呢?这样的话,无论建立多少对象都会执行设置年龄的方法,在设置年龄的方法里面进行验证,这样岂不是更好?

2.封装

我们必须将年龄字段隐藏起来,不能让外界直接对其获取或设置,然后提供对外的方法供其获取或设置。

怎么才能将年龄字段隐藏起来呢?

使用private访问修饰符即可。

修改Student类:

“全栈2019”Java第四十三章:封装

那么这样以来,我们也就无法直接获取到年龄字段,也无法再直接设置年龄。接下来,得提供获取年龄到方法和设置年龄的方法,继续修改Student类:

“全栈2019”Java第四十三章:封装

这样一来,我们就有了获取年龄的方法和设置年龄的方法。然后来试一试:

Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

从运行结果来看,准确无误。

不过,我们得把写在Main类里面的验证办法移到Student类中设置年龄的方法里去。

演示:

验证设置的年龄是否合法。

实现:

Student类:

“全栈2019”Java第四十三章:封装

Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

这样就完美了。

对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并要求通过对象的方法执行所有交互称为数据封装 - 面向对象编程的基本原则。

3.get、set方法

get、set方法是体现封装的一种形式。也是日常开发必做的。

演示:

定义多个字段,实现get、set方法。

实现:

Student类:

“全栈2019”Java第四十三章:封装

Main类:

“全栈2019”Java第四十三章:封装

结果:

“全栈2019”Java第四十三章:封装

从运行结果来看,准确无误。

以后请大家定义字段时,隐藏必要的字段信息,提供get、set方法。

总结

  • 面向对象三大特性是封装、继承、多态。
  • 对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。方法对对象的内部状态进行操作,并作为对象到对象通信的主要机制。隐藏内部状态并要求通过对象的方法执行所有交互称为数据封装 - 面向对象编程的基本原则。

至此,Java中封装相关内容讲解先告一段落,更多内容请持续关注。

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

“全栈2019”Java第四十二章:静态代码块与初始化顺序

下一章

“全栈2019”Java第四十四章:继承

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号Gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号Gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

“全栈2019”Java第四十三章:封装

版权声明

原创不易,未经允许不得转载!