📅  最后修改于: 2023-12-03 15:32:31.565000             🧑  作者: Mango
Kotlin是一种基于JVM的静态类型编程语言,它支持类、接口、抽象类等继承机制。在Kotlin中,继承是通过关键字:
来实现的。
Kotlin中,一个类可以继承另一个类或者实现一个或多个接口。继承一个类可以使用class
关键字后跟类名,而实现一个接口可以使用interface
关键字后跟接口名。下面是一个简单的例子:
// 父类 BaseClass
open class BaseClass() {
fun baseMethod() {
println("BaseClass method")
}
}
// 子类 DerivedClass
class DerivedClass() : BaseClass() {
fun derivedMethod() {
println("DerivedClass method")
}
}
// 接口 MyInterface
interface MyInterface {
fun interfaceMethod()
}
// 实现接口的类
class MyClass() : MyInterface {
override fun interfaceMethod() {
println("MyClass method")
}
}
在上面的例子中,DerivedClass
继承了BaseClass
,MyClass
实现了MyInterface
。
子类可以重写父类中的函数,使用关键字override
。下面是一个简单的例子:
open class BaseClass() {
open fun baseMethod() {
println("BaseClass method")
}
}
class DerivedClass() : BaseClass() {
override fun baseMethod() {
println("DerivedClass method")
}
}
在上面的例子中,BaseClass
中的函数baseMethod
被DerivedClass
重写了。
Kotlin不支持多重继承,但是它支持多个接口的实现。下面是一个简单的例子:
interface MyInterface1 {
fun interfaceMethod1()
}
interface MyInterface2 {
fun interfaceMethod2()
}
class MyClass() : MyInterface1, MyInterface2 {
override fun interfaceMethod1() {
println("MyClass method 1")
}
override fun interfaceMethod2() {
println("MyClass method 2")
}
}
在上面的例子中,MyClass
实现了两个接口MyInterface1
和MyInterface2
。
在Kotlin中,抽象类是使用abstract
关键字声明的类,它们不能直接实例化。抽象类可以有抽象方法和非抽象方法,而非抽象方法必须有具体的实现。下面是一个简单的例子:
// 抽象类 BaseClass
abstract class BaseClass {
abstract fun abstractMethod()
fun nonAbstractMethod() {
println("BaseClass non-abstract method")
}
}
// 继承抽象类的子类
class DerivedClass : BaseClass() {
override fun abstractMethod() {
println("DerivedClass abstract method")
}
}
在上面的例子中,BaseClass
是抽象类,DerivedClass
是抽象类的子类。
接口是可以包含抽象方法和默认方法的定义。默认情况下,接口的所有方法都是抽象的。下面是一个简单的例子:
// 接口 MyInterface
interface MyInterface {
fun abstractMethod()
fun defaultMethod() {
println("MyInterface default method")
}
}
// 实现接口的类
class MyClass : MyInterface {
override fun abstractMethod() {
println("MyClass abstract method")
}
}
在上面的例子中,MyClass
实现了MyInterface
接口的所有方法。
至此,Kotlin继承相关的介绍结束。