Kotlin 继承
在 Kotlin 中,继承是实现面向对象编程的一个关键概念。Kotlin 提供了一个简化的、易用的继承机制。下面是一些关于 Kotlin 继承的基本要点:
开放类与方法:
- 默认情况下,Kotlin 中的类和成员是
final
的,也就是说它们是不可继承的。要让一个类能够被继承,需要使用open
关键字标记。例如:
open class Parent { open fun greet() { println("Hello from Parent") } }
- 默认情况下,Kotlin 中的类和成员是
子类化(继承):
- 使用
:
符号来表示继承关系。子类在声明时需要指明它继承的父类。
class Child : Parent() { override fun greet() { println("Hello from Child") } }
- 使用
方法重写:
- 要重写父类的方法,子类中的方法必须加上
override
关键字。被重写的方法在父类中必须是open
的。 如果不希望某个方法在进一步派生的类中被重写,可以用
final
修饰。open class Parent {
open fun greet() {
println("Hello from Parent")
}
final fun sayBye() {
println("Goodbye!")
}
}
class Child : Parent() {
override fun greet() {
println("Hello from Child")
}
}
- 要重写父类的方法,子类中的方法必须加上
构造函数:
- 如果父类有一个主构造函数,子类必须在声明时用主构造函数初始化父类。
可以在子类的主构造函数中调用父类的构造函数,也可以通过次构造函数调用。
open class Parent(val name: String)
class Child(name: String, val age: Int) : Parent(name)
继承限制:
- Kotlin 类支持单继承,这意味着一个类只能直接继承一个父类。
- 但可以实现多个接口。
抽象类:
使用
abstract
关键字定义一个类为抽象类,抽象类不能被实例化,可以包含抽象成员,这些成员必须在子类中实现。abstract class Animal {
abstract fun makeSound()
}
class Dog : Animal() {
override fun makeSound() {
println("Woof")
}
}
通过这些机制,Kotlin 提供了灵活且强大的继承功能,能够帮助开发者构建可重用且可扩展的代码。