美文网首页
Kotlin构造函数

Kotlin构造函数

作者: 挨踢小能手 | 来源:发表于2020-01-10 16:04 被阅读0次

最近刚从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学习笔记——基础语法篇之类和对象

    类的构造 Kotlin类的写法 Kotlin类的构造函数分为主构造函数和二级构造函数 主构造函数的特点——函数名为...

  • 类和继承

    类 Kotlin 中使用 关键字 Class 声明类 构造函数 Kotlin 中类可以有主构造函数 和 次构造函数...

  • Kotlin学习-构造函数

    Kotlin的构造函数分为主构造函数(primary constructor)和次级构造函数(secondary ...

  • 一篇文章学会Kotlin中的构造函数

    在学习kotlin的时候发现kotlin中的构造函数和java中的构造函数有很大的不同 java中的构造函数写法 ...

  • Kotlin 继承

    Kotlin 继承 构造函数

  • Kotlin面向对象 (3)✔️构造函数

    主构造函数次构造函数默认构造函数 kotlin中的构造函数有主次之分,主构造函数只能有一个,此构造函数可以有多个。...

  • 构造函数 Kotlin的类包括1个主构造函数和多个次构造函数。 主构造函数 其中主构造函数会紧跟类名进行声明。 声...

  • kotlin 类的次级构造

    kotlin 类的多级构造函数

  • Kotlin中类的定义

    Kotlin中定义类也是使用class关键字 基本格式 构造函数主构造函数二级构造函数 构造函数分为主构造函数和二...

  • Kotlin学习

    1. 构造函数 kotlin中构造函数分为主构造函数和次级构造函数主构造函数:可以直接在类名后面的括号内进行参数定...

网友评论

      本文标题:Kotlin构造函数

      本文链接:https://www.haomeiwen.com/subject/ynfmactx.html