声明:本文首发于我的个人微信公众号【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 + "努力工作中!"); }}
执行结果
使用封装
设置类的属性private关键字,不能使用对象名.属性名的方式直接访问对象的属性。
总结:如果不使用封装,很容易赋值错误,并且任何人都可以更改,造成信息的不安全。
那么问题来了
- 为什么之前可以通过对象名.属性名的方式访问?
- 使用private修饰属性后,无法在类外边调用,那么如何给属性赋值?
答案是:
- public修饰符是公共的,谁都可以访问
- private修饰符是私有的,只有自己可以访问
- 属性被private修饰后,我们可以通过get,set方法对属性进行设值和取值
请看下边代码:
执行结果:
封装就分享到这了,后续会继续分享,敬请期待!
声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号