三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Kotlin 面向对象 - init 块

Kotlin 面向对象 - init 块

Kotlin init 块

1、基本介绍
  • init 块,是初始化块,用于在主构造函数执行后执行一些额外的初始化逻辑
2、演示
  1. 基本使用
classPerson(valname:String){init{println("初始化中,姓名:$name")}}
valp=Person("张三")
# 输出结果 初始化中,姓名:张三
  1. 可以有多个 init 块,它们会按从上到下的顺序依次执行
classPerson(valname:String){init{println("第一个 init 块")}init{println("第二个 init 块,姓名:$name")}}
valp=Person("张三")
# 输出结果 第一个 init 块 第二个 init 块,姓名:张三
  1. init 块常用于验证构造函数参数
classUser(valemail:String,valage:Int){init{require(email.isNotEmpty()){"邮箱不能为空"}require(age>=18){"年龄必须大于等于 18"}}init{println("创建用户:$email, 年龄:$age")}}
valuser=User("jack@example.com",10)
# 输出结果 Exception in thread "main" java.lang.IllegalArgumentException: 年龄必须大于等于 18
  1. 与次构造函数的关系:主构造函数 → init 块 → 次构造函数执行
classStudent(valname:String){init{println("init 块执行")}constructor(name:String,grade:Int):this(name){println("次构造函数执行,年级:$grade")}}
vals=Student("Bob",3)
# 输出结果 init 块执行 次构造函数执行,年级:3
← 返回列表