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

В Kotlin для наследования классов и реализации интерфейсов используется двоеточие : после имени класса. После двоеточия указывается родительский класс, а затем через запятую - интерфейсы. Ключевое слово extends не используется явно, как в некоторых других языках программирования.

Синтаксис

kotlinclass ChildClass : ParentClass(), Interface1, Interface2 {
  // тело класса
}

Пример

Создадим базовый класс Animal и класс Dog, который наследует от него:

kotlinopen class Animal {
  fun eat() {
    println("Animal is eating")
  }
}

class Dog : Animal() {
  fun bark() {
    println("Dog is barking")
  }
}

Теперь создадим объект класса Dog и вызовем методы:

kotlinval dog = Dog()
dog.eat()
dog.bark()

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

kotlinAnimal is eating
Dog is barking

Пример

Наследование с реализацией интерфейсов:

kotlininterface Movable {
  fun move()
}

interface Soundable {
  fun makeSound()
}

open class Vehicle

class Car : Vehicle(), Movable, Soundable {
  override fun move() {
    println("Car is moving")
  }
  
  override fun makeSound() {
    println("Car is honking")
  }
}

Использование класса Car:

kotlinval car = Car()
car.move()
car.makeSound()

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

kotlinCar is moving
Car is honking

Пример

Наследование с передачей параметров в конструктор родительского класса:

kotlinopen class Person(val name: String, val age: Int) {
  fun introduce() {
    println("My name is $name and I am $age years old")
  }
}

class Student(name: String, age: Int, val studentId: String) : Person(name, age) {
  fun study() {
    println("Student $name is studying")
  }
}

Использование класса Student:

kotlinval student = Student("John", 20, "S12345")
student.introduce()
student.study()
println("Student ID: " + student.studentId)

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

kotlinMy name is John and I am 20 years old
Student John is studying
Student ID: S12345

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

  • ключевое слово class,
    для объявления классов
  • ключевое слово interface,
    для объявления интерфейсов
  • ключевое слово open,
    для разрешения наследования от класса
  • ключевое слово override,
    для переопределения методов родительского класса