Kotlin基本语法-类与对象

类与继承

Kotlin使用关键字class声明类

//简洁的语法声明属性及其主构造函数初始化属性
class Person(val firstName: String, val lastName: String, var age: Int) { /……/ }

构造函数
  • 概念:在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名(与可选的类型参数)后

    class Person constructor(firstName: String) { /……/ }

  • 主构造函数:

    • 如果主构造函数没有任何注解或者可见修饰符,可以省略这个constructor 关键字。
    • 主构造函数不能包含任何代码。初始化的代码可以放到init关键字作为前缀的初始化块中
      class InitOrderDemo(name: String) {
      val firstProperty = "First property: $name".also(::println)
      init {
      println("First initializer block that prints ${name}")
      }
      val secondProperty = "Second property: ${name.length}".also(::println)
      init {
      println("Second initializer block that prints ${name.length}")
      }
      }
      //打印结果
      First property: hello
      First initializer block that prints hello
      Second property: 5
      Second initializer block that prints 5
    • 注意:主构造函数中的参数可以在初始化快中使用,也可以在类体声明的属性初始化器中使用。
  • 次构造函数:前缀是constructor的构造函数,可以有多个。

    • 如果类有主构造函数。每个次构造函数需要委托给主构造函数,可以直接委托或者通过别的次构造函数间接委托。 委托到同一个类的另一个构造函数 用this关键字即可。
      class Person(val name: String) {
      var children: MutableList = mutableListOf();
      constructor(name: String, parent: Person) : this(name) {
      parent.children.add(this)
      }
      }