博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记——封装
阅读量:6032 次
发布时间:2019-06-20

本文共 1411 字,大约阅读时间需要 4 分钟。

声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号

今天我们来看看面向对象的三大特征之一——封装

下来我们从现实生活中的例子来聊聊封装的特性

我们日常使用的电脑主机,把CPU、内存、主板等等都封装到机箱里面去。假如没有机箱的话出现什么问题,主机、主板全部都散落在一处,然后开机没有开机按钮,那么需要我们直接操作跳线才能把电脑开启。这样子如果操作不慎的话,机器就有损坏的危险。因此,为了安全,现实生活中我们有机箱将CPU、内存、主板等等封装起来。这样就体现了封装的安全性

你拿着电脑去加内存,可以直接把电脑给维修的人,等他加好内存之后,你拿到的还是那个机箱,里面发生了怎样的变化你并不知道。封装的第二个好处——将变化隔离

在机箱上提供一个开机按钮,而不需要你直接使用跳线开机的话,体现了封装的便于使用的特性

将这个机箱无论拿到什么地方,都可以使用开机的功能,体现了封装的提供重复性的特性。

我们在来通过代码的对比来了解封装

模拟问题

1、描述Employee类,定义姓名、工号、性别的成员变量和工作的方法

2、创建Employee对象,对象.成员的方式进行赋值,最后该对象调用工作的方法。

不使用封装的情况

public class EmployeeDemo{    public static void main(String[] args) {        //创建对象        Employee employee = new Employee();        employee.name = "zhangsan";        employee.id = "1234";        employee.gender = "男";                //调用成员方法        employee.work();        System.out.println();                //传入非法的参数        employee.gender = "不是男人";        employee.work();    }}class Employee{    String name;    String id;    String gender;        public void work() {        System.out.println(id + ":" + name + ":" + gender + "努力工作中!");    }}

执行结果

clipboard.png

使用封装

设置类的属性private关键字,不能使用对象名.属性名的方式直接访问对象的属性。

clipboard.png

总结:如果不使用封装,很容易赋值错误,并且任何人都可以更改,造成信息的不安全。

那么问题来了

  • 为什么之前可以通过对象名.属性名的方式访问?
  • 使用private修饰属性后,无法在类外边调用,那么如何给属性赋值?

答案是:

  • public修饰符是公共的,谁都可以访问
  • private修饰符是私有的,只有自己可以访问
  • 属性被private修饰后,我们可以通过get,set方法对属性进行设值和取值

请看下边代码:

clipboard.png

clipboard.png

执行结果:

clipboard.png

封装就分享到这了,后续会继续分享,敬请期待!

声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号

转载地址:http://dedhx.baihongyu.com/

你可能感兴趣的文章
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
jQuery选择器和事件
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
VDI序曲二十 桌面虚拟化和RemoteApp集成到SharePoint 2010里
查看>>
cx_Oracle install
查看>>
jquery ajax从后台获取数据
查看>>
Nginx下载服务生产服务器调优
查看>>
移动互联网,入口生死战
查看>>
nginx面试常问题目
查看>>
制作ubuntu系统u盘镜像,以及安装
查看>>
JAVA多线程深度解析
查看>>
Kafka High Level Consumer 会丢失消息
查看>>
时间轴
查看>>
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
消息队列服务器 memcacheq的搭建
查看>>
VMware Horizon View 7.5 虚拟桌面实施咨询与购买--软件硬件解决方案
查看>>