НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1272 of 1310 menu

Ключевое слово super

Ключевое слово super позволяет обращаться к методам, свойствам и конструкторам родительского класса из дочернего класса. Оно особенно полезно при переопределении методов, когда нужно вызвать реализацию родительского класса и дополнить её новой функциональностью.

Синтаксис

super.methodName() // вызов метода родителя super.propertyName // обращение к свойству родителя super() // вызов конструктора родителя super<InterfaceName>.method() // вызов метода конкретного интерфейса

Пример

Вызов метода родительского класса при переопределении:

open class Animal { open fun makeSound() { println("Some generic animal sound") } } class Dog : Animal() { override fun makeSound() { super.makeSound() // вызов метода родителя println("Woof! Woof!") } } val dog = Dog() dog.makeSound()

Результат выполнения кода:

Some generic animal sound Woof! Woof!

Пример

Обращение к свойству родительского класса:

open class Vehicle { open val maxSpeed: Int = 100 } class Car : Vehicle() { override val maxSpeed: Int = 200 fun showSpeeds() { println("Car max speed: $maxSpeed") println("Vehicle max speed: ${super.maxSpeed}") } } val car = Car() car.showSpeeds()

Результат выполнения кода:

Car max speed: 200 Vehicle max speed: 100

Пример

Вызов конструктора родительского класса:

open class Person(val name: String) { init { println("Person created: $name") } } class Student(name: String, val grade: Int) : Person(name) { init { println("Student created: $name, grade: $grade") } } val student = Student("John", 5)

Результат выполнения кода:

Person created: John Student created: John, grade: 5

Пример

Явное указание интерфейса при множественном наследовании:

interface A { fun show() { println("Interface A") } } interface B { fun show() { println("Interface B") } } class C : A, B { override fun show() { super<A>.show() // вызов метода из интерфейса A super<B>.show() // вызов метода из интерфейса B println("Class C") } } val c = C() c.show()

Результат выполнения кода:

Interface A Interface B Class C

Смотрите также

  • ключевое слово override,
    которое используется для переопределения членов класса
  • ключевое слово open,
    которое позволяет наследоваться от класса
  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово interface,
    которое используется для объявления интерфейсов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить