Kotlin构造函数

最近刚从java切换到kotlin以前java的构造函数如果是继承的话,基本都是ctrl + enter方式快速生成构造函数,在kotlin中这样不行了,下面总结下kotlin的构造函数方式,以及与java的区别

java一般构造函数如下

    public class Person {

    public String name;

    Person(String name){
        this.name = name;
    }
}

构造函数与类名相同。

在kotlin中构造函数分为

  • 主构造函数
  • 次构造函数

一、主构造函数

主构造函数是类头的一部分,跟在类名之后

class Person constructor(name:String){
    
}

如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字。

class Person (name:String){
}

注意:主构造函数不能包含任何代码,初始化代码可以放到以init关键字作为前缀的初始化块中。

如下

1.在init中初始化

class Person (name:String){
    val name:String

    init {
        this.name = name
    }
}

主构造器的参数可以在初始化块中使用,也可以在类体声明使用

2.在类的声明体内初始化

class Person (name:String){
    val name = name
}

kotlin还有更简介的方式如下

3.在构造器中定义属性

class Person (val name: String){
}

二、次构造函数

次构造器前缀必须有关键字constructor

class Person (name: String , age:Int){
    private val name: String = name
    private var age: Int = age
    private var address: String = ""
    
    constructor(username: String, age: Int, address: String) : this(username ,age) {
        this.address = address
    }
}

如果类已经声明了主构造器,在次构造器中需要委托给主构造函数,上面例子中使用this(username ,age),委托给主构造器。

在即有主构造器, 又有次构造器的情况,次构造器最终都是调用了主构函数来创建对象

你可能感兴趣的:(Kotlin构造函数)