Kotlin 中的继承/实现

1 继承

1.1 基本规则
  • 默认不可继承(抽象类除外):Kotlin 中的类和方法默认是 final 的,必须显式声明为 open 才能被继承;
  • 单继承:一个类只能继承自一个父类;
// 父类必须用 open 修饰
open class User { 
    open fun eat() { } // 允许重新的方法用 open
}

// 子类,继承语法: 子类 : 父类()
class Student : User() {
    override fun eat() { }  // 重写父类方法
}
1.2 主构造函数继承

父类参数直接在子类声明中传递:

open class User(name: String) {
    open fun eat() {
    }
}

class Student(name: String) : User(name) {
    override fun eat() {
    }
}
1.3 次构造函数继承

super 调用父类构造:

class Student : User {
    constructor(name: String) : super(name)
}

2 接口实现

基本规则:

  • 多实现:一个类可以实现多个接口;
  • 默认方法:接口可以包含默认实现的方法;
// 接口定义
interface Flyable {
    fun fly() 												// 抽象方法(默认)
    fun glide() = println("Gliding") 	// 带默认实现
}

interface Swimmable {
    fun swim()
}

// 类实现多个接口
class Duck : Flyable, Swimmable {
    override fun fly() = println("Duck flying")

    override fun swim() = println("Duck swimming")
}

3 抽象类和抽象方法

abstract class Shape {
    abstract val area: Double 	// 抽象属性
    abstract fun draw() 				// 抽象方法
}

class Circle(val radius: Double) : Shape() {
    override val area: Double get() = Math.PI * radius * radius

    override fun draw() = println("Drawing a circle")
}

你可能感兴趣的:(kotlin,开发语言,android)