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

【Kotlin】类的初始化 ① ( 成员属性 | Kotlin 自动为成员字段生成 getter 和 setter 方法 | 手动设置成员的 getter 和 setter 方法 | 计算属性 )

文章目录 一、Kotlin 自动为成员字段生成 getter 和 setter 方法 二、手动设置成员的 getter 和 setter 方法 三、计算属性 一、Kotlin 自动为成员字段生成 getter...和 setter 方法 ---- 定义 Kotlin 类 , 在 类中 定义成员属性 , 会自动生成 getter 和 setter 方法 ; 在 Kotlin 中定义如下类 , 在其中定义两个字段...age 成员的 getter 和 setter 函数 ; 调用 hello.name 方法 , 实际上调用的是 hello.setName 方法 ; class Hello { var name...和 setter 方法 ---- Kotlin 会为 类中的每个 成员属性 生成一个 field , getter , setter ; field 用于存储 属性数据 , 是由 Kotlin 自动进行定义封装的..., 只有在 getter 和 setter 函数中才能调用 field ; 手动定义 getter 和 setter 方法示例 : class Hello { var name = "Tom"

2.1K20

为什么要用Getter和Setter方法,而不是公开属性

大多数字段的访问都是通过Getter和Setter方法来间接访问,为什么不直接将字段设置为公开属性Public呢?答案在于前者的未来可能性。...例如,可以将字段设置为空值,如果在另一个方法中使用该字段,则该方法可能会因空指针异常而崩溃。 但是,如果你提供了一个Getter和Setter,你可以在完全控制的同时提供间接访问。...如果出现任何错误,Setter将不会将该值传递给类成员字段。读了解释之后,我知道你还有一个问题。 我理解,但一般来说,我们不写任何东西在Getter和Setter。...为了回答这个问题,我说通过编写Getter和Setter,我们创建了一个用于将来添加任何验证方法的条款,目前,没有验证,但是如果将来出现任何错误,我们只是在Setter中添加验证逻辑。...但是,当一个字段没有这样的验证约束时,为什么要麻烦写一个Getter和Setter?我可以简单地公开它。 根据我的理解,问题的症结在于避免使代码变得不必要的复杂。

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GPT提效Java程序员,从这里开始!

    另外,我之后一段时间打算分享 AI 对 Java 等程序员提效方面的内容,大家有兴趣的可以后台留言。 同时,有好的建议,如果采纳,也可以给大家发红包哟!...和setter方法 } 注意:因为Json中的age字段类型为整数,因此在Java Bean中对应一个int类型的属性。...和setter方法 } 注意:由于popInfo字段类型为Object,具体的类型会根据实际情况变化,因此需要在程序中根据实际需要进行类型转换。...User 的Java Bean对象,该对象具有与表中列对应的成员变量,以及相应的 getter 和 setter 方法。...为了不让 AI 替代我们,我们必须使用 AI,为我们工作提效,成为更高效的程序员,才能有更大的几率在裁员大潮下留下来。 未来,一定是会用 AI 的程序员替代不会使用 AI 的程序员,大家共勉!

    38810

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

    构造方法是创建对象的必经之路,放在首位是必须的。如果只有系统默认的无参构造方法,可忽略。...在初学 Java 编程的时候,我经常产生一个疑惑:为什么不使用 public 修饰成员变量呢?这样做不是比 getter/setter 更方便吗? 我最先想到的答案是这样的: ?...如果设置成员变量为 public,那么每个调用者都可以读写它,但如果以 private 配合 getter/setter 的形式访问时,就可以达到“不准访问”、“只读访问”、“读写访问”以及“只写访问”...因为不是每个成员变量都需要 getter/setter。 5)每个类都至少会有一个构造方法。初学者可能会非常疑惑:我的那个类真的没有构造方法啊!...右侧的表达式 new Candidate("秋秋") 先执行,执行完后,会在堆上创建了一个 name 为“秋秋”的对象,类型为 Candidate,表达式 new Candidate("秋秋") 的值是新创建对象的引用

    49920

    Getter & Setter:使用还是废弃

    如果一个类是包级私有或是私有嵌套类可见,假设它的属性字段很好的描述了类所提供的数据,那么对外暴露这些属性字段本质上是没有问题的。 这样的类被限制在类所声明的包内,同时调用代码受限于类内部表示。...这是一个特殊的例外,我也告诉人们不要在他们的类中使用公共属性,但也存在例外。这就是这个规则的一个例外,因为仅仅说它是一个属性会更加简单和安全。我们退一步想一想:既然这样,为什么要这条规则呢?...这真的实现了封装吗? 实际上,Getter/Setter和封装性没有任何关系。 数据并没有比使用公共属性获得更多隐蔽或封装。 其他的类对这个类的内部细节仍然了如指掌。...以这种方式使用的Getter和Setter通常破坏了封装性。 一个真正完整封装的类是没有setter方法的,而且最好也没有getter方法。...但是,为每一个属性都创建getter和setter方法确实有些极端。而且这也要根据具体的情况来定,有些时候你仅仅希望有一个单纯的数据对象而已。应该为真正需要的属性添加存取方法。

    1.3K60

    这次要说不明白immutable类,我就怎么地

    二哥你的文章总是充满趣味性,我想一定能够说明白,我也一定能够看明白,能在接下来写一写吗?...2)确保所有的成员变量(字段)是 final 的,这样的话,它们就只能在构造方法中初始化值,并且不会在随后被修改。 3)不要提供任何 setter 方法。...4)如果要修改类的状态,必须返回一个新的对象。 按照以上条件,我们来自定义一个简单的不可变类 Writer。...,分别是 name 和 price,以及 getter 和 setter,重写后的 toString() 方法。...好了,我亲爱的读者朋友,以上就是本文的全部内容了,能看到这里的就是最优秀的程序员。原创不易,莫要白票,请你为本文点个在看吧,因为这将是我写作更多优质文章的最强动力。

    74410

    Groovy 面向对象编程-类成员中字段和属性学习-第三篇

    一个或多个可选修饰符(static、final、synchronized)。 可选类型。 名称必须有。...同时,如果我们创建get和set方法时,并没有创建类成员变量。Groovy也可以自动进行识别。...如果我们的类不完全符合这些约定,当然可以像在Java中那样手工编写getter、setter和返回字段。 然而,Groovy确实提供了拆分定义功能,它仍然提供了缩短的语法,同时允许对约定进行轻微调整。...3.5 显示访问方法 如果类中存在getter或setter的显式定义,则不会自动生成get和set方法。这允许您根据需要修改此类getter或setter的正常行为。...Groovy会自动帮我们创建。我们如果自己创建了get和set方法,Groovy就不会自动创建了。 我们如果继承父类的时候标注为final了。子类也不会获取和自动生成相应的get和set方法。 4.

    78210

    Scala-8.面向对象-构造函数

    构造函数可见性 一个字段被声明为var,Scala会为该字段生成getter和setter方法 一个字段是val,只会生成getter方法。...如果一个字段没有val或者var,Scala不会生成getter和setter方法 var和val字段可以被private关键字修饰,防止生成getter和setter方法 定义辅助构造函数:在类内部以...辅助构造函数必须用this为名创建 每个辅助构造函数必须从调用之前定义的构造函数开始 一个构造函数通过this调用另一个不同的构造函数 case class里添加的辅助构造函数不是构造函数,是类的伴生对象中的...timeout: Int = 10000) 覆盖默认的访问和修改方法:常见方法是在参数名前添加一个_name,然后根据Scala的约定声明getter和setter方法 阻止生成getter方法和setter...通常需要吧字段定义为Option可以给到一个默认的初始值 * 继承类的构造函数参数:将基类的构造函数的参数定义为var或者val。

    98540

    Lombok介绍和使用

    大致意思: Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。...Lombok常用注解 常用的几个注解: @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。...@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。...JDK5引入了注解的同时,也提供了两种解析方式。 运行时解析 运行时能够解析的注解,必须将@Retention设置为RUNTIME,这样就可以通过反射拿到该注解。...属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等 缺点 不支持多种参数构造器的重载 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性

    90420

    Spring 框架学习(七)---- bean自动装配、注解开发

    我们先搭建一个可以实现装配的环境 Fish类,拥有swim方法 package com.bit.pojo; import lombok.Getter; import lombok.Setter; import...bean有多个,能查找成功吗?...答案就是搭配@Qualifier进行使用 @Qualifier 如果在配置文件中,有多个相同类型的bean,同时bean的id与set后面的字段不一致,如下图 <bean id="bird1"...@Autowired进行搭配使用 按照@Qualifier 中的value进行设置,查找上下文中id为 value的 唯一的bean @Value 字段属性标记了这个注解,可以在注解后面的括号中进行这只该属性的值...User { @Value("张三") private String name; } (2)创建一个类,在类上加上@Configuration 使得这个类变成一个配置类,完全等价于之前的

    43510

    【译】利用Lombok消除重复代码

    当你在写Getter和Setter时,一定无数次的想过,为什么会有POJO这么烂的东西。你不是一个人!...我总结了以下几点: Getter和Setter注解会自动生成getter、setter方法 NoArgsConstructor和AllArgConstructor可以帮助你快速生成构造函数 ToString...下面我们就来看一个完整的例子。 Getters和Setters 为被注解的自动生成getXXX和setXXX方法。...NoArgConstructor创建一个无参构造函数,所有的字段都会初始化为默认值 AllArgsConstructor创建一个全参数构造函数,每个字段都会初始化为指定值 RequiredArgsConstructor...创建一个构造函数,参数包括所有final字段和标记为NotNull的字段 import lombok.* @AllArgsConstructor class Document { @Getter

    1.1K30

    手撸了一个Java的不可变对象,很哇塞!

    二哥,你能给我说说为什么 String 是 immutable 类(不可变对象)吗?我想研究它,想知道为什么它就不可变了,这种强烈的愿望就像想研究浩瀚的星空一样。...二哥你的文章总是充满趣味性,我想一定能够说明白,我也一定能够看明白,能在接下来写一写吗? 收到读者小 R 的私信后,我就总感觉自己有一种义不容辞的责任,非要把 immutable 类说明白不可!...2)确保所有的成员变量(字段)是 final 的,这样的话,它们就只能在构造方法中初始化值,并且不会在随后被修改。 3)不要提供任何 setter 方法。...4)如果要修改类的状态,必须返回一个新的对象。 按照以上条件,我们来自定义一个简单的不可变类 Writer。...,分别是 name 和 price,以及 getter 和 setter,重写后的 toString() 方法。

    28010

    JavaScript 类完整指南

    字段3.1 公共实例字段3.2 私有实例字段3.3 公共静态字段3.4 私有静态字段4. 方法4.1 实例方法4.2 Getter 和 Setter4.3静态方法5....如果你没有为该类定义构造函数,则会创建一个默认的构造函数。默认构造函数是一个空函数,它不会修改实例。 同时,一个 JavaScript 类最多可以有一个构造函数。 3....4.2 Getter 和 Setter getter 和 setter 模仿常规字段,但是对如何访问和修改字段有更多控制。 在尝试获取字段值时执行 getter,而在尝试设置值时使用 setter。...为了确保 User 的 name 属性不能为空,让我们将私有字段 #nameValue 包装在一个 getter 和 setter 中: class User { #nameValue; constructor...类和原型 我必须说,JavaScript 中的类语法在从原型继承中进行抽象方面做得很好。为了描述 class 语法,我甚至没有使用术语原型。 但是这些类是建立在原型继承之上的。

    99920
    领券