Ключевое слово override
Ключевое слово override используется для переопределения
методов и свойств, объявленных в родительском классе или интерфейсе.
При переопределении дочерний класс предоставляет свою собственную
реализацию метода или свойства, которая заменяет реализацию
родительского класса.
Синтаксис
override fun methodName(parameters): ReturnType {
// method body
}
override val propertyName: Type
get() = // getter implementation
override var propertyName: Type = initialValue
Пример
Переопределение метода в дочернем классе:
open class Animal {
open fun makeSound() {
println("Some generic animal sound")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Bark bark!")
}
}
val dog = Dog()
dog.makeSound()
Результат выполнения кода:
String "Bark bark!"
Пример
Переопределение свойства с собственной реализацией геттера:
open 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)
Результат выполнения кода:
Double 78.53981633974483
Пример
Переопределение свойства с инициализацией значения:
open class Vehicle {
open val maxSpeed: Int = 100
}
class SportsCar : Vehicle() {
override val maxSpeed: Int = 250
}
val car = SportsCar()
println(car.maxSpeed)
Результат выполнения кода:
Int 250
Пример
Переопределение метода с вызовом реализации родительского класса:
open 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()
Результат выполнения кода:
String "Base printer message"
String "Color printer additional message"
Пример
Переопределение абстрактных членов класса:
abstract class Database {
abstract fun connect()
}
class MySQLDatabase : Database() {
override fun connect() {
println("MySQL database connected")
}
}
val db = MySQLDatabase()
db.connect()
Результат выполнения кода:
String "MySQL database connected"