Kotlin 继承学习笔记

什么是继承?

继承是面向对象编程(OOP)的基本概念之一。它允许我们创建一个新的类,这个类继承了另一个已经存在的类的所有属性和方法。被继承的类被称为父类超类,新创建的类被称为子类派生类

在Kotlin中,我们使用冒号(:)关键字来指示一个类继承自另一个类。

kotlinCopy Code
class Animal { fun makeSound() { println("各种动物发出不同的声音") } } class Cat : Animal() { fun meow() { println("喵喵喵") } }

上面的代码中,Cat类继承了Animal类,并添加了自己的方法meow

子类的特性

继承使得子类可以继承父类的属性和方法。子类也可以重写父类的方法,以实现自己的逻辑。

调用父类的构造函数

在Kotlin中,如果子类要继承父类的主构造函数,必须在子类的主构造函数中调用父类的构造函数:

kotlinCopy Code
open class Animal(val name: String) class Cat(name: String) : Animal(name) { fun meow() { println("${name}喵喵喵") } }

上面的代码中,Animal类有一个参数name的主构造函数,而Cat类在继承Animal类时,使用了name参数来调用父类的构造函数。

重写父类的方法

如果要在子类中重写父类的方法,需要在方法前面加上override关键字。同时,Kotlin中的方法默认是不可覆盖的,如果需要允许方法被覆盖,需要在方法前面加上open关键字。

kotlinCopy Code
open class Animal(val name: String) { open fun makeSound() { println("$name 发出不同的声音") } } class Cat(name: String) : Animal(name) { override fun makeSound() { println("$name 喵喵喵") } }

上面的代码中,Animal类有一个方法makeSound,而Cat类覆盖了该方法并实现了自己的逻辑。

示例

下面是一个包含Animal类和Dog类的示例代码:

kotlinCopy Code
open class Animal(val name: String) { open fun makeSound() { println("$name 发出不同的声音") } } class Dog(name: String) : Animal(name) { override fun makeSound() { println("$name 汪汪汪") } } fun main() { val animal = Animal("动物") animal.makeSound() val dog = Dog("小狗") dog.makeSound() }

运行上面的代码,输出结果如下:

Copy Code
动物 发出不同的声音 小狗 汪汪汪

在上面的代码中,Animal类有一个方法makeSound,而Dog类覆盖了该方法并实现了自己的逻辑。在main函数中,我们创建了AnimalDog的实例,并调用它们的makeSound方法。