JAVA三大特性之------封装

什么是封装

封装就是将类的信息隐藏在类内部,不允许外部程序直接访问,而是通过该类的方法实现对隐藏信息的操作和访问。
通常将成员变量声明为private,通过set和get对变量赋值和读取
封装说白了就是把关键的,没必要给其他人看的逻辑密封好,装起来,不让其他人看。你只要调用我public暴露出来的方法就行,如list集合中(list.remove(),list.clear())你可以不知道他内部的具体操作,你要学会用他给你暴露出来的十几个方法。

private的作用

属性上加上private,属性就不能被其他类来访问了,方法上加上private,方法也不会被其他类调用。
要想被访问必须把private换成public,public是所有访问权限中权限最高的。

封装的好处
  • 减少其他人看你类的时间,让调用的人看你的代码更简单。
  • 由于属性和某些方法封装起来了, 让你的代码逻辑更安全。
    Person类
    那大家有好多问题了,首先就是质疑以上的两点好处:
  • 我写的代码比如Person这个类,如果我想知道里边的逻辑,我直接打开去看不就好了,private的我也能看到,怎么会减少时间,调用的人看代码怎么会简单?
  • 封装起来后我并没有觉得简单啊?代码我还是能看到啊,跟我一起工作的同事也能看到啊?安全在哪里?
第一种场景

实际工作中,我们写的代码量是远远大于Person这类的,一个类会有几百行甚至上千行,那方法甚至会有几十个,可能这个类就完成几个简单的功能,却有几十个方法来协同工作,所以只需要把这几个简单的功能公开出来就好。
比如Person类的age年龄,年龄是如何赋值,如何自增或自减的逻辑没必要让其他人看到,我们就用private修饰的AgeData()方法写逻辑,用Public修饰的readAge()方法获取年龄的值。
这样的好处就是,你的Person类同事只要去看你公开的方法(public修饰的方法)就可以了,方法上面带上注释就能清晰的知道这个方法是做什么用的,至于方法内部的逻辑处理就不用细看了,全用private修饰的方法封装起来

第二种场景

在实际工作中很多逻辑其实并不是自己写的,怎么说呢?比如文件读取操作,使用的是系统IO操作的类库,这些类库直接通过import导入类就可以使用了,那这些类代码更多,成千上万行,那你能去通读吗?显然是很难做到的,所以他们封装了很多 操作,提供出来几十个公开的方法,这样你看公开的方法就可以了

说白了你不用关心电视机内部是什么结构(private)你只要会用遥控器就行(public)

关于安全方面

Person 这个类经常用,那如果你把年龄这个字段写成public,或者你公开一个set方法

public void setAge(int age){
this.age = age;
}

那这个年龄很有可能被其他人调用了setAge或者直接person.name=12,这样修改了年龄!实际上年龄应该是走你的算法,每年递增,比如去年1岁,今年2岁,那你突然给它设置个12岁,那这个人的年龄就会出问题!所以要做封装,这样数据才会安全!

所以我们要把年龄的逻辑用private修饰,public只返回结果,外部类只能调用你公开的public方法,而不能调用你处理逻辑的私用方法private,这样他们就不能修改你的年龄,只能获取你返回的结果,这就是数据安全的问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值