classHello(// 主构造函数, 直接在主构造函数中定义属性varname:String,// 该值是临时变量, 为 age 属性赋值_age:Int){// 类中的属性varage=_agevartype="老鼠"vargender:String init{println("init 初始化块开始执行")gender="男"}constructor(_age:Int):this("Tom
在Kotlin 类中,init 块的执行顺序遵循以下规则: 类的属性初始化器(如果有的话)会首先执行。 然后,按照它们在类中出现的顺序,依次执行所有的 init 块。 最后,执行类的构造函数。 3. 举例说明 init 块与其他初始化代码(如构造函数)的执行顺序关系 下面是一个包含 init 块、属性初始化器和构造函数的 Kotlin 类...
初始化顺序 主构造函数:首先执行类的主构造函数。 init块:接着执行所有的init块,按照它们在类中出现的顺序。 @PostConstruct注解的方法:在所有init块执行完毕后,Spring会调用标记了@PostConstruct注解的方法。 应用场景 当你需要在Bean完全初始化之前执行一些逻辑时,可以使用init块。
classPerson(valname:String,varage:Int=0){// init 初始化块init{println("Initialized a person named$namewho is$ageyears old.")}// 次构造器constructor(name:String,age:Int):this(name){this.age=age}}// 主函数,测试代码funmain(){// 使用主构造器valperson1=Person("Alice")// 使用次构造器val...
可以看到执行顺序,是按照它们声明的顺序执行。 将上面Koltin代码转成字节码之后,显示内容如下: // ===com/devnn/javalib/InitOrderDemo.class ===// class version 52.0 (52)// access flags 0x31publicfinalclasscom/devnn/javalib/InitOrderDemo{// access flags 0x12privatefinalLjava/lang/String; first...
2.初始化执行的顺序 主构造函数里声明的属性 类级别的属性赋值 init初始块里的属性赋值和函数调用 次构造函数里的属性赋值和函数调用 案例代码如下: class Students( _name: String, val age: Int ) { var name = _name var score = 10 private val hobby = "music" ...
println("view init 2") } } 如果有多个init,则会从上到下按顺序执行 3、从构造方法 一个类里面可以有多个从构造方法,格式是 constructor(...): this(...)或者如果有父类可以是 constructor(...): super(...) open classView { constructor(ctx: String):this(ctx, "attr?") { // 这里的this调用...
init函数是在类的主构造函数完成执行之后调用的,因此可以使用这些构造函数中初始化的属性和参数。如果类包含多个init函数,则按照它们在代码中出现的顺序顺序执行。 下面是一个示例: ``` class Person(val na String, val age: Int) { init { println('新建了一个Person,名字是$name,年龄是$age') } } ```...
说明:init 代码块可以有多个,按照从前往后的顺序执行;上述构造函数都是次要构造函数,第 3 节中会介绍主构造函数。 运行程序后,打印如下。 Student init, name=zhang san, age=18 create-1, name=zhang san, age=18 study... --- Student init, name=zhang san, age=18 create-2, name=li si, age=23...