Kotlin学习日记-类和构造函数


  大家好,欢迎加入阿闯学长的Kotlin学习之旅。

  今天来讲kotlin的类和构造函数。

  Kotlin学习日记-类和构造函数

  一、Classes -类

  使用关键字class声明Kotlin中的类:

  class Student{

  ···

  }

  class 类名 类头{

  // 类体

  }

  类声明由类名,类头(指定其类型参数,主构造函数等)和类主体组成,由大括号括起。标题和正文都是可选的; 如果类没有主体,可以省略花括号。

  class Student

  一、Constructors - 构造器 - 构造函数

  Kotlin中的一个类可以有一个主构造函数和一个或多个辅助构造函数。主构造函数是类头的一部分:它位于类名(和可选的类型参数)之后。

  class Person constructor(firstName: String){ // 我是首要构造器

  }

  如果主构造函数没有任何注释或可见性修饰符, 则可以省略constructor关键字:

  class Person(firstName: String){ ... }

  主构造函数不能包含任何代码。初始化代码可以放在初始化块中,初始化块以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}")

  }

  }

  请注意,主构造函数的参数可以在初始化程序块中使用。它们也可以在类体中声明的属性初始值设定项中使用:

  class Customer(name: String){

  val customerKey = name.toUpperCase()

  }

  实际上,为了声明属性并从主构造函数初始化它们,Kotlin有一个简洁的语法:

  class Person(val firstName: String, val lastName: String, var age: Int){ ... }

  与常规属性大致相同,在主构造函数中声明的属性可以是可变的(var)或只读的(val)。

  如果构造函数具有注释或可见性修饰符,则构造函数关键字是必需的,修饰符位于其前面:

  class Customer public