РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1247 of 1310 menu

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

Ключевое слово open используется для разрешения наследования от класса или переопределения методов и свойств. По умолчанию все классы в Kotlin являются финальными (final) и не могут быть унаследованы.

Синтаксис

open class ClassName { open fun methodName() { // method body } open val propertyName: Type = value }

Пример

Создадим открытый класс Animal с открытым методом:

open class Animal { open fun makeSound() { println("Some sound") } } class Dog : Animal() { override fun makeSound() { println("Bark") } } val dog = Dog() dog.makeSound()

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

String "Bark"

Пример

Создадим открытое свойство с возможностью переопределения:

open class Vehicle { open val maxSpeed: Int = 100 } class Car : Vehicle() { override val maxSpeed: Int = 200 } val car = Car() println(car.maxSpeed)

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

Int 200

Пример

Попытка наследования от финального класса без open вызовет ошибку:

class FinalClass { fun method() { println("Final method") } } // Error: This type is final, so it cannot be inherited from // class ChildClass : FinalClass()

Пример

Использование open с абстрактными классами:

abstract open class AbstractBase { open fun concreteMethod() { println("Concrete implementation") } abstract fun abstractMethod() } class ConcreteClass : AbstractBase() { override fun abstractMethod() { println("Implemented abstract method") } } val obj = ConcreteClass() obj.concreteMethod() obj.abstractMethod()

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

String "Concrete implementation" String "Implemented abstract method"

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

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