原文: https://beginnersbook.com/2019/03/kotlin-abstract-class/

抽象类无法实例化,这意味着我们无法创建抽象类的对象。与其他类不同,抽象类总是打开的,因此我们不需要使用open关键字。

注意事项:

  1. 我们无法创建抽象类的对象。
  2. 抽象类的属性和成员函数默认为非抽象。如果要在子类中覆盖这些,则需要为它们使用open关键字。
  3. 如果成员函数是抽象的,那么它必须在子类中实现。抽象成员函数没有仅主体方法签名,实现在子类中完成。

抽象类示例

在下面的例子中我们有一个抽象类Student,我们不能创建这个类的对象。但是我们可以继承这个类,就像我们在下面的例子中所做的那样。类College继承抽象类Student

函数func()是一个抽象函数,这意味着它没有正文和唯一的方法签名,但由于它是一个抽象函数,它必须在子类中覆盖

  1. abstract class Student(name: String, age: Int) {
  2. init {
  3. println("Student name is: $name")
  4. println("Student age is: $age")
  5. }
  6. //non-abstract function
  7. fun demo() {
  8. println("Non-abstract function of abstract class")
  9. }
  10. //abstract function
  11. abstract fun func(message: String)
  12. }
  13. class College(name: String, age: Int): Student(name, age) {
  14. override fun func(message: String) {
  15. println(message)
  16. }
  17. }
  18. fun main(args: Array<String>) {
  19. val obj = College("Chaitanya", 31)
  20. obj.func("I'm a Blogger")
  21. obj.demo()
  22. }

输出:

Kotlin 抽象类 - 图1