Ключевое слово override
Ключевое слово override используется для переопределения
методов и свойств, объявленных в родительском классе или интерфейсе.
При переопределении дочерний класс предоставляет свою собственную
реализацию метода или свойства, которая заменяет реализацию
родительского класса.
Синтаксис
kotlinoverride fun methodName(parameters): ReturnType {
// method body
}
kotlinoverride val propertyName: Type
get() = // getter implementation
kotlinoverride var propertyName: Type = initialValue
Пример
Переопределение метода в дочернем классе:
kotlinopen class Animal {
open fun makeSound() {
println("Some generic animal sound")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Bark bark!")
}
}
val dog = Dog()
dog.makeSound()
Результат выполнения кода:
kotlinString "Bark bark!"
Пример
Переопределение свойства с собственной реализацией геттера:
kotlinopen class Shape {
open val area: Double = 0.0
}
class Circle(val radius: Double) : Shape() {
override val area: Double
get() = Math.PI * radius * radius
}
val circle = Circle(5.0)
println(circle.area)
Результат выполнения кода:
kotlinDouble 78.53981633974483
Пример
Переопределение свойства с инициализацией значения:
kotlinopen class Vehicle {
open val maxSpeed: Int = 100
}
class SportsCar : Vehicle() {
override val maxSpeed: Int = 250
}
val car = SportsCar()
println(car.maxSpeed)
Результат выполнения кода:
kotlinInt 250
Пример
Переопределение метода с вызовом реализации родительского класса:
kotlinopen class Printer {
open fun printMessage() {
println("Base printer message")
}
}
class ColorPrinter : Printer() {
override fun printMessage() {
super.printMessage()
println("Color printer additional message")
}
}
val printer = ColorPrinter()
printer.printMessage()
Результат выполнения кода:
kotlinString "Base printer message"
String "Color printer additional message"
Пример
Переопределение абстрактных членов класса:
kotlinabstract class Database {
abstract fun connect()
}
class MySQLDatabase : Database() {
override fun connect() {
println("MySQL database connected")
}
}
val db = MySQLDatabase()
db.connect()
Результат выполнения кода:
kotlinString "MySQL database connected"