参考https://www.kotlincn.net/docs/reference/classes.html
构造函数
在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名
class Person constructor(firstName: String) { /*……*/ }
类初始化
kotlin没有关键词new
val invoice = Invoice()
val customer = Customer("Joe Smith")
继承
默认情况下,Kotlin 类是最终(final)的:它们不能被继承。 要使一个类可继承,请用 open
关键字标记它。
类的继承如下图所示
open class Base(p: Int)
class Derived(p: Int) : Base(p)
如果派生类没有主构造函数,那么每个次构造函数必须使用 super 关键字初始化其基类型,或委托给另一个构造函数做到这一点。 注意,在这种情况下,不同的次构造函数可以调用基类型的不同的构造函数:
class MyView : View {
constructor(ctx: Context) : super(ctx)
constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs)
}
方法覆盖
open class Shape {
open fun draw() { /*……*/ }
fun fill() { /*……*/ }
}
class Circle() : Shape() {
override fun draw() { /*……*/ }
}
属性覆盖
open class Shape {
open val vertexCount: Int = 0
}
class Rectangle : Shape() {
override val vertexCount = 4
}
抽象类
open class Polygon {
open fun draw() {}
}
abstract class Rectangle : Polygon() {
abstract override fun draw()
}
属性与字段
class Address {
var name: String = "Holmes, Sherlock"
var street: String = "Baker"
var city: String = "London"
var state: String? = null
var zip: String = "123456"
}
接口
interface MyInterface {
fun bar()
fun foo() {
// 可选的方法体
}
}
// 实现接口
class Child : MyInterface {
override fun bar() {
// 方法体
}
}