J***A语言中封装的优点有,j***a语言中封装的优点有哪些

dfnjsfkhak 34 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言封装的优点有的问题,于是小编就整理了1个相关介绍JAVA言中封装的优点有的解答,让我们一起看看吧。

  1. 为什么java需要getter/setter来获取私有属性?

为j***a需要getter/setter来获取私有属性?

如果不用,技术上完全可以直接把变量定义为public直接访问。但这只是说技术上。实际中不会这么做。

那很多人可能会想为什么要这么麻烦呢?因为用函数封装可以隐藏内部实现

JAVA语言中封装的优点有,java语言中封装的优点有哪些-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

一般情况下,我们的get/set方法就是直接返回内部私有变量,感觉上有没有这个函数其实无所谓。但是在项目开发中。随着项目软件的更新,功能的增加和修改,可能未来删除或者修改这个变量了。这种时候封装的好处就体现出来了。

举个例子,比如有一个正方形的类,内部保存了正方形相对于屏幕的位置,但是这个位置是正方形的左上角坐标,有一个函数getPosition返回这个坐标,那么第一版可能就是直接返回的这个位置变量。但是随着程序的开发,更多的时候需要用到正方形的中心位置,而类的内部也不需要用到左上角坐标了,所以对类的内部进行了修改,删除了这个坐标变量。

那么如果没有封装的话,就不能轻易修改这个类,一但修改,曾经所有用到左上角位置变量的地方就都需要修改。那将是天大的灾难。但是有了封装,曾经使用的地方,其实用的是一个函数。那我们修改类的时候只要修改一下这个函数的内部算法,用中心位置计算一下左上角位置返回出去,那么对于用到这个函数的地方根本不需要修改,因为他们并不知道也不需要知道类内部调整了,继续用就可以了。也不会出现问题。而类的内部我们做的任何修改,只要不影响之前函数的功能,就没有问题。这个就是封装的好处。

JAVA语言中封装的优点有,java语言中封装的优点有哪些-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

所以才会有get/set函数,不单单是j***a,c++等只要是面相对象编程语言都一样的,这个是一个编程思想。而并非是j***a独有。

题主好,我来回答这个问题。

首先,通过g/s来获取私有属性的值,是j***aBean规范中的一条,主要是为了把对象私有的那点小秘密藏起来,避免被坏人看到

(图片来源网络,侵删)

举例说明,张三是一个对象,张三的钱包是他的一个属性,当然张三为了安全起见,会把钱包藏起来,只有自己能看到,也就是说,钱包是private的。张三还有个坑爹儿子:小三子。因为有了小三子,张三就需要提供一个供小三子领生活费的方法,而不是直接把钱包暴露给小三子。因为,直接暴露给小三子的话,会有以下几个问题:

1、张三控制不住小三子拿钱,万一拿去买了游戏皮肤就不好了;

2、张三有多少钱,都可以被小三子看到,但是很多时候,张三是不希望被小三子看到的(例如私房钱);

3、小三子长大以后给张三生活费,给了多少张三也不知道,就好像得了老年痴呆一样。

总之,通过方法来操作属性的根本目的就是为了保护自己的私有属性,不被外部直接访问。

小项目***,因为就算getset也是用public修饰符,所以还是相当于公开,封装就是个概念,实际改的还是那个对象里的那个属性,或者你可以在getset里加一些逻辑约束,比如限制set的内容格式,或者get出来的东西做额外处理,实际影响其实无感知,不要底层,那么爱学底层去学汇编,聪明的人就是利用工具,而不是被工具所限制

你自己的项目的话可以将属性写成 public 直接访问,没毛病,想咋写咋写。

但是你要是写组件,写框架的话就不建议了。

首先,你属性权限开的太高,那么使用者可以随意更改,但使用者并不知道具体实现细节,可能改完之后在后续逻辑流程中就报异常,还吐槽框架不好用。所以使用 getter/setter 进行限定,只让使用者修改你允许修改的属性。

其次,有利于版本升级。比如由于某些逻辑,获取这个属性之前你必须进行某些计算,那么这个时候你直接更改 getter 方法实现,使用者进行升级即可,对使用者原有代码不会有影响。而如果之前是直接属性访问的话,你就麻烦了,你必须关闭 public 访问权限,然后提供 getter 方法,别人升级版本时,也必须去更改自己的代码,很是麻烦。

最后,就是整天说的那一套了,什么面向对象,什么封装神马的了

到此,以上就是小编对于J***A语言中封装的优点有的问题就介绍到这了,希望介绍关于J***A语言中封装的优点有的1点解答对大家有用。

标签: 张三 这个 三子