类
类声明由类名、类头(指定其类型参数、主构造函数等)和由大括号包围的类体构成。类头和类体都是可选的; 如果一个类没有类体,可以省略花括号。
class Perosn{ }
class Person
构造函数
一个类可以有一个主构造函数和一个或多个次构造函数。
主构造函数
主构造函数是类头的一部分:它跟在类名(和可选的类型参数)后。如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor
关键字。如果构造函数有注解或可见性修饰符,这个 constructor
关键字是必需的,并且这些修饰符在它前面。
主构造函数不能包含任何的代码。初始化的代码可以放到以 init
关键字作为前缀的初始化块(initializer blocks)中。注意,主构造的参数可以在初始化块中使用。它们也可以在类体内 声明的属性初始化中使用。
构造函数是 public。可以加关键字 private 成私有的构造函数
class Person constructor(firstName: String) { } class Person (firstName: String) { }
//私有构造函数
class Person private constructor(firstName: String) { }class Person (firstName: String) { //初始化 init { logger.info("Person initialized with value ${firstName}") } //类体内调用 val customerKey = firstName.toUpperCase() } //有修饰符,constructor不可省略 class Customer public @Inject constructor(name: String) { …… }
次构造函数
class Person { constructor(parent: Person) { } }
抽象类
abstract class Person { abstract fun f() }