📅  最后修改于: 2023-12-03 15:17:09.945000             🧑  作者: Mango
抽象类是指只能被继承而不能直接实例化的类,它可以包含抽象成员方法以及非抽象成员方法。在 Kotlin 中,抽象类使用 abstract
修饰符来声明。
以下是声明抽象类的语法:
abstract class Shape {
abstract fun area(): Double
open fun perimeter(): Double {
return 0.0
}
}
上述代码中,Shape
类是一个抽象类,包含了一个抽象方法 area()
和一个非抽象方法 perimeter()
。
area()
方法没有方法体,必须由子类实现。perimeter()
方法有一个默认的实现,但可以被子类重写。需要注意的是,抽象类不能被实例化:
val shape = Shape() // 错误,无法实例化抽象类
当我们需要实现一个抽象类时,需要重写其中的抽象方法,并提供方法体:
class Circle(val radius: Double) : Shape() {
override fun area(): Double {
return Math.PI * radius * radius
}
override fun perimeter(): Double {
return 2 * Math.PI * radius
}
}
上述代码中,我们实现了一个具体类 Circle
,该类继承了抽象类 Shape
,并重写了其中的抽象方法 area()
和非抽象方法 perimeter()
。注意重写方法时必须加上 override
关键字。
除了方法,抽象类还可以包含属性。在抽象类中定义的属性可以是抽象或非抽象的。举个例子:
abstract class Shape {
abstract val area: Double
open val perimeter: Double = 0.0
}
上述代码中,Shape
类包含了两个抽象属性 area
和一个非抽象属性 perimeter
。
实现抽象属性时需要提供其具体实现:
class Circle(val radius: Double) : Shape() {
override val area: Double
get() = Math.PI * radius * radius
override val perimeter: Double
get() = 2 * Math.PI * radius
}
abstract
修饰符来声明。