首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在类中为自己的字段使用getter/setter有什么好处吗?

在类中为自己的字段使用getter/setter有以下好处:

  1. 封装性:使用getter/setter可以将字段的访问权限进行封装,通过定义不同的访问权限,可以控制字段的读写操作,提高数据的安全性和可靠性。
  2. 数据验证:通过在setter中添加验证逻辑,可以确保字段的值符合特定的规则或条件。例如,可以验证输入的数据是否合法、是否满足特定的范围或格式要求,从而保证数据的有效性。
  3. 计算属性:getter/setter可以用于计算属性,即根据其他字段的值动态计算得到的属性。通过getter方法,可以在获取属性值时进行计算,从而减少重复的计算操作。
  4. 可扩展性:使用getter/setter可以为字段的读写操作提供一个中间层,使得在后续的开发过程中可以方便地对字段的读写逻辑进行修改或扩展,而不需要修改类的调用代码。
  5. 代码维护性:通过使用getter/setter,可以将字段的读写操作集中在一处,便于代码的维护和管理。如果后续需要修改字段的读写逻辑,只需要修改getter/setter方法,而不需要修改所有调用该字段的代码。
  6. 兼容性:使用getter/setter可以提供对旧版本代码的兼容性。如果在后续的版本中需要对字段的读写逻辑进行修改,可以通过保留原有的getter/setter方法,并在其中添加新的逻辑,从而保证对旧版本代码的兼容性。

总结起来,使用getter/setter可以提高代码的封装性、安全性和可维护性,同时还可以提供数据验证、计算属性和兼容性等功能。在实际开发中,根据具体的需求和场景,合理使用getter/setter可以使代码更加健壮和灵活。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

阅读《代码整洁之道》总结-各种技巧分享

软件开发过程,可以理解不要破坏规则,不要引入混乱。...,在编译时自动属性生成构造器、getter/setter、equals、hashcode、toString方法 举例如下: @Setter 注解字段,注解所有字段生成setter方法,注解字段上时只为该字段生成...@Getter 使用方法同上,区别在于生成getter方法。 @ToString 注解,添加toString方法。...@RequiredArgsConstructor 注解需要特殊处理字段生成构造方法,比如final和被@NonNull注解字段。...@Data 注解,生成setter/getter、equals、canEqual、hashCode、toString方法,如final属性,则不会为该属性生成setter方法。

99540

面向对象思想,谈面试过程?

4 个重要概念: 成员变量(有时叫做域,有时叫做字段,有时叫做属性)name; 成员变量访问器(有时叫做 getter/setter)getName() 和 setName(); 构造方法(有时叫做构造器...初学 Java 编程时候,我经常产生一个疑惑:为什么使用 public 修饰成员变量呢?这样做不是比 getter/setter 更方便? 我最先想到答案是这样: ?...当然了,这样答案过于牵强。那能不能来个靠谱点答案呢? 能,为了体现封装思想:将数据与行为进行分离。封装有什么好处呢?...隐藏实现细节; 让使用者只能通过事先定制好方法(getter/setter)来访问数据,可以方便地加入控制方法,限制对成员变量不合理操作; 便于修改,增强代码维护性和健壮性; 提高代码安全性和规范性...第一,成员变量使用基本类型很容易造成NullPointException错误;第二, getter/setter 增加业务逻辑的确很容易把实际问题隐藏起来。 那,好答案究竟是什么呢?

48120

Getter & Setter使用还是废弃

存取方法 存取方法(又被称为getters和setters)是一些可以用来读写对象实例变量值方法。 为什么使用存取方法? 使用存取方法而非直接暴露属性是有理由。...属性可以被声明为包级私有或是私有嵌套可见。在这些,相对于使用存取方法而言,对外直接暴露属性字段可以减少定义和调用代码视觉混乱。...如果一个是包级私有或是私有嵌套可见,假设它属性字段很好描述了所提供数据,那么对外暴露这些属性字段本质上是没有问题。 这样被限制所声明包内,同时调用代码受限于内部表示。...以这种方式使用GetterSetter通常破坏了封装性。 一个真正完整封装是没有setter方法,而且最好也没有getter方法。...但是,每一个属性都创建gettersetter方法确实有些极端。而且这也要根据具体情况来定,有些时候你仅仅希望一个单纯数据对象而已。应该为真正需要属性添加存取方法。

1.2K60

警惕不规范变量命名

看看错误示范,会导致什么问题,以SpringjdbcTemplate来进行实验。...变量,也普遍提倡使用包装类型,而原生类型不足之处是很明显。...由此引申出了gettersetter命名规范,除了第一节Boolean类型特例之外,网上还有不少文章,强调了这样概念:eBook对应gettersetter应当geteBook(),seteBook...兴趣朋友可以eclipse,intellij idea中试试,这几种规范/不规范变量命名,各自对应gettersetter方法是如何。...最后说一个和JavaBean相关取值规范,jspc标签,freemarker一模板语法,以及一些el表达式,${student.name}并不是取studentname字段,而是调用了student

1.9K90

Java开发神器Lombok使用详解

好处就显而易见了,可以节省大量重复工作,特别是当POJO属性增减时,需要重复修改Getter/Setter、构造器方法、equals方法和toString方法等。...同时,插件描述也能够看到它支持注解。 第二步,引入pom依赖,当前最细版本1.18.10。...注解上,提供该类所有属性getter/setter方法,还提供了equals、canEqual、hashCode、toString方法。 这里提供什么意思?...@Setter 作用于属性上,该属性提供setter方法; 作用与上,该类所有的属性提供setter方法, 都提供默认构造方法。...与@Data相比多了全参构造方法,少了默认构造方法、setter方法和canEqual方法。 该注解需要注意是:会将字段添加上final修饰,个人感觉此处有些失控,不太建议使用

90420

基础篇-ObjectC继承、类别、属性

继承好处: (1)抽取出了重复代码 (2)建立了之间联系 继承缺点:耦合性太强 属性 OC定义变量,可以自己来定义变量setter方法来设置变量值,用getter方法来获取变量值...声明property属性后,2种实现选择 @synthesize  作用是实现属性,如gettersetter方法....当自定义存或取方法时,自定义会屏蔽自动生成该方法 @dynamic 告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告 然后由自己实现存取方法 如果@synthesize和@...(@"%i",person.age);//这也是getter settergetter改进写法: 每次要为一个属性写上gettersetter,不得不手十分麻烦,所以了更简单写法, ....一样 -(void)show { NSLog(@"%i",_age); } 可以看出来,Objective-Csetter器没什么区别,不过getter方法名缺少了get,因为get

1.8K10

OC知识--成员变量(属性,实例变量)相关知识

这样写好处在下边会提到 2. settergetter方法 我们无法从外界(比如其他和文件)直接访问定义成员变量。...可以让我们使用getter方法获取数据之前,对数据进行加工 比如双十一活动,我们希望对全线商品价格原来价格基础上打五折,那么我们只要去改成品类价格getter方法就可以了,让他返回价格...如果内部成员变量,只允许外界读取,但是不允许修改,则通常只提供getter方法而不提供setter方法 成员变量名命名以下划线开头,settergetter方法名不需要带下划线 成员变量名使用下划线开头两个好处...什么是@property @property是是声明属性语法 @property用在声明文件告诉编译器声明成员变量访问器(getter/setter)方法 使用@property好处是:免去我们手工书写...什么是@synthesize @synthesize是实现属性方法语法 @synthesize用在实现文件告诉编译器实现成员变量访问器(getter/setter)方法 使用@synthesize

2.4K60

Scala 学习笔记之类

gettersetter属性 2.1 Java gettersetter Java,我们并不喜欢使用公有字段: public class Person{ public int age...一个age属性. 2.2 Scala gettersetter Scala对每个字段都提供了gettersetter方法: class Person{ var age = 0 } scala...(对于私有字段而言,gettersetter方法也是私有的)  scalagettersetter方法分别叫age和age_=.使用时候如下: val p = new Person p.age...只带getter属性 如果只想需要一个只读属性,getter但没有setter,属性值在对象构建完成之后就不再改变了,可以使用val字段: class Student { val age...,其值被初始化成构造时传入参数.上述示例name和agePerson字段. (2) 主构造器会执行定义所有语句 class Person(val name:String) { println

42030

Java面向对象三大特性(封装、继承、多态)

大家好,又见面了,我是你们朋友全栈君。 文章目录 前言 一、封装 1. 封装概念 2. private实现封装 3. gettersetter方法 4.封装好处 二、继承 1....这就得用到 ger 和 set 方法了 3. gettersetter方法 当我们用private修饰字段后,这个字段就无法被直接使用了。...setName 即为 setter 方法, 表示设置这个成员值 不是所有的字段都一定要提供 setter / getter 方法, 而是要根据实际情况决定提供哪种方法....来看一个列子: 当我们自己给父写了一个构造方法后,两个子类都报错了,是什么原因呢? 因为当子类继承父后,构造子类之前,就必须先帮父进行构造。...和多态什么关系? 当我们在这个代码添加一个drawMap方法后 运行结果 这不就是动态绑定

28930

POJO、JavaBen、Entity区别

其中有一些属性及其gettersetter方法,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。...3.这个属性使用gettersetter来访问,其它方法准从标准命名规范。 4.这个应是可序列化。实现serializable接口。...entity(实体) 1.就是属性,通常定义model层里面 2.一般实体对应一个数据表,其中属性对应数据表字段。...2.属性可以对字段定义和状态进行判断和过滤 3.把相关信息用一个实体封装后,我们程序可以把实体作为参数传递,更加方便。...4,实体应该个无参构造方法。 5,实体属性和方法,属性对应数据库中表字段,主要有gettersetter方法。 6,实体还应该有个属性serialVersionUID。

4.2K20

TW洞见〡gettersetter那些事

但是,当你写了很多程序,写过很多gettersetter,尤其是有些方法,只有gettersetter时,总会有一天,你会疑惑,我到底为什么要这么干? Why private field?...要解释为什么需要gettersetter,先要知道为什么字段应该是private汇编语言时,数据都是公开。所谓公开,是指几乎任何指令,都可以作用在任意数据块上。...也就是说,为了合作需要,代码单元需要将数据暴露出来。 那么直接将数据字段设置public,与通过gettersetter方式来暴露字段什么区别?...如果直接将内部数据字段暴露出来,比如上面这段代码name,如果某天一个新需求,要求所有名字都用大写字母表示,就只能添加一个新接口upperName,而使用name地方,需要修改调用方式。...因为C#和Python,property访问方式和直接将数据字段暴露出来访问方式完全一样,所以写代码时可以考虑先将数据暴露出来,避免过多gettersetter,减少冗余代码。

87060

面向对象——封装

1.什么是封装 把对象状态和行为归一个整体当中,即字段和方法放到一个 信息隐藏:把不需要让外界知道信息隐藏起来尽可能隐藏对象功能实现细节,向外暴露方法,保证外界安全访问功能 2.封装好处 保证数据安全...提高组件复用性 3.访问修饰符 访问权限修饰符来规定在一个里面能看到什么,能暴露什么 private:访问权限;里面可以访问,外不能访问 protected:子类访问权限,同包和继承可以访问...public:公共访问权限,当前项目中任何地方访问 默认:包访问权限,同包可以访问,继承不能 4.属性概念 属性和字段类似也是一个成员变量,但是必须要有gettersetter方法才可以叫属性,...this是表示当前对象地址相当于当前对象变量 解决成员变量和参数问题 同类实例方法相互调用可省略this this可以作为参数也可以作为返回值,总之表示了对象相当于那个对象变量 构造方法相互调用...this这时表示构造方法名字 注意:this不能和static 一起使用,因为static和字节码是载入JVM内存时就纳入了方法区,此时还没有执行还没有使用对象。this没有指向

53740

不,这样 DTO!

Martin,这篇文章很短,强调内容简单得不能再简单,也许大家早就意识到,但是,我依然可以很多产品代码里面找到文中所说 “教条” 影子,我说不清为什么,在这里激烈讨论,你们说呢?...这时候这位程序员提出了质疑:“DTO 应该使用私有的变量和一套相应 gettersetter 方法!”,“为什么呢?” 我问。 到底是为什么?...为什么我们要用一堆毫无用处 gettersetter 方法,去遵循那些没有人可以解释教条,来膨胀我们代码呢? 观点中,面向对象程序包含两种实体:对象和数据结构。...但另一方面,对一个单纯数据结构使用 gettersetter 并没有什么好处,一个数据结构只是一种数据简单容器,没别的了!...gettersetter 方法,这通常意味着这个一开始就不该是一个,这个东西只是个数据结构。

33210

OOP三大特性之封装

即便我们把对象理解成数据+函数,数据、函数也不是对等: 函数是接口 接口是稳定 数据是内部实现 实现是易变,应该隐藏 很多人开发习惯:写一个,写其一堆字段,然后生成一堆gettersetter...设计角度,必须谨慎自省:这个方法必要暴露? 其实可仅暴露一个方法: 外部调用代码也会简化: 尽可能减少接口暴露,该原则适于设计、系统设计。...每暴露一个公共API就增加一份职责,所以每次暴露API时就要问自己,这个职责是自己必要,还是可能会增加不必要负担。 一个原则是最小化接口暴露。...比如: DDD领域实体,就是对象,需仔细设计其行为接口 一些POJO,可看成数据载体,可直接加gettersetter(没有这些默认gettersetter,很多第三方数据转化都很不方便,比如...Demeter 是希腊神话大地和丰收女神,也叫做德墨忒尔。 迪米特法则简单说,分为两个部分:不该有直接依赖关系之间,不要有依赖;依赖关系之间,尽量只依赖必要接口。

48420

Scala 【 6 面向对象编程 】

private var field,此时 scala 生成面向 JVM 时,会定义 private name 字段,并提供 public gettersetter 方法。...} } 如果不希望 field setter 方法,则可以定义 val ,但是此时就不能更改 field 值了。...此时由于 field 是 private ,所以 settergetter 都是 private ,对外界没有暴露;自己可以实现修改 field 值方法;自己可以覆盖 getter 方法。...如果将 field 使用 private 来修饰,那么代表这个 field 是私有的,方法,可以直接访问其他对象 private field 。...内部类 Scala ,同样可以定义内部类,但是与 Java 不同是,每个外部类对象内部类都是不同。 意思就是定义之后生成两个外部类,那么这两个外部类内部类不是同一种。

21830

Go语言中常见100问题-#4 Overusing getters and setters

过度使用gettersetter 在编程,数据封装是指隐藏对象值或状态。...gettersetter是通过未导出对象字段上提供导出方法来进行数据封装方法,Java语言中使用比较多,但在Go语言中,没有自动支持它们,所以使用gettersetter访问struct字段不是强制性...然而,这个例子说明标准库也不强制使用gettersetter,即使当我们不应该修改一个字段时。 虽然不强制使用gettersetter,但有时候使用它们一些如下优点。...我们应该务实一些,努力效率和遵循其他编码范式中有被认为无可争辩习语之间(像在Java语言对象添加gettersetter方法)找到适当平衡。...但是,如果发现需要gettersetter,或者保证向前兼容同时预见到未来需求,这种情况下使用gettersetter没有问题。

41620

Java开发效率工具--Lombok

该不该用Lombok 这个问题可以说一直很大争议,比如最近爆文:为什么要放弃Lombok,等等许多相似抨击Lombok插件文章,我个人是比较赞成使用Lombok,至少目前为止使用非常得心应手,...age; } @Data @Data 注解上面,自动生成setter/getter、equals、canEqual、hashCode、toString方法,如某个属性final,则不会为该属性生成...每个字段生成一个带有1个参数构造函数。...说实话没看明白这段话是什么意思,个人理解字段上标注 @With 注解之后,将会自动生成一个 withFieldName(newValue) 方法,该方法会基于 newValue 调用相应构造函数...默认情况下,lombok遵循针对gettersetterbean规范:例如,名为Pepper字段getter是getPepper。

70430

什么要用GetterSetter方法,而不是公开属性

大多数字段访问都是通过GetterSetter方法来间接访问,为什么不直接将字段设置公开属性Public呢?答案在于前者未来可能性。...当我Java语言编程开始我职业生涯时,我就对GetterSetter感到困惑。为什么要这么写呢?为什么不直接用Public呢?这对我来说是个奇怪语法。 ?...我了解到,通过公共访问修饰符,一个字段对于任何包都是可访问,并且使用getter/setter,我实际上正在做相同事情——使字段私有化,而getter/setter方法是公共,因此它可以被任何包访问...例如,可以将字段设置空值,如果在另一个方法中使用字段,则该方法可能会因空指针异常而崩溃。 但是,如果你提供了一个GetterSetter,你可以完全控制同时提供间接访问。...我理解,但一般来说,我们不写任何东西GetterSetter。我们只返回并设置字段,就像公开字段一样。那你为什么要说这些?

2.1K10
领券