Java里面取值(get)跟赋值(set)有什么区别
在Java中,取值(get)与赋值(set)是面向对象编程中常用的操作,涉及到对象属性的访问和修改。区别主要包括:1.功能意图;2.方法定义;3.返回值;4.参数需求;5.数据安全性;6.应用场景;7.与封装的关系。“get”方法的主要目的是从私有属性中提取值,而“set”方法是为私有属性赋予新的值。这两种方法是Java类的公共接口,允许外部代码访问和修改对象的状态。
1.功能意图
“get”方法的主要目的是从私有属性中提取值,而“set”方法是为私有属性赋予新的值。这两种方法是Java类的公共接口,允许外部代码访问和修改对象的状态。
2.方法定义
“get”方法通常命名为getPropertyName
,其中“PropertyName”是相应属性的名称,并且不需要参数;而“set”方法命名为setPropertyName
,需要一个参数,用于设置属性值。
3.返回值
“get”方法具有返回值,通常是相应属性的数据类型,用于返回该属性的当前值。而“set”方法通常没有返回值,即其返回类型为void。
4.参数需求
“get”方法不需要任何参数,因为它只是返回属性的值。而“set”方法需要一个参数,与要设置的属性值的类型相匹配。
5.数据安全性
通过使用“set”方法,开发者可以在赋值之前添加验证或转换逻辑,确保数据的完整性和安全性。而“get”方法则可以选择性地返回属性的复制品,以保护内部数据。
6.应用场景
当需要读取对象的属性值时,使用“get”方法;当需要修改对象的属性值时,使用“set”方法。这为外部代码提供了一种统一和受控的方式来访问和修改对象的状态。
7.与封装的关系
“get”和“set”方法是封装原则的体现,它们保护对象的状态不被外部代码直接访问,同时提供了一种受控的访问方式。封装可以保护数据的完整性,并隐藏实现细节。
延伸阅读
Java中直接赋值和构造方法赋值的区别
在Java中,直接赋值只会产生一个实例化对象,并且可以自动保存到对象池中,以实现对象的复用;而构造方法赋值会产生两个实例化的对象,并且不会自动入池,无法实现对象的重用。
1.直接赋值:先在字符串池中寻找是否存在和这个值相同的String对象。如果没有,则在字符串池中创建这个对象,然后返回这个对象的引用;若寻找成功,则直接返回这个引用。
2.构造方法赋值:堆允许程序在运行时动态地申请某个大小的内存空间。虽然两个对象指向同一块内容,但是他们本身是两个不同对象,只是地址相同。
直接赋值只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用;而如果使用构造方法赋值,就会开辟两块堆内存空间,并且其中一块堆内存将成为垃圾空间,此外也会对字符串共享产生问题。