Интерфейсы и абстрактные классы в Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
Интерфейсы и абстрактные классы предоставляют механизмы для организации кода, обеспечивая структуру и определенные обязательства для классов, которые их реализуют. Давайте рассмотрим определение интерфейсов, их реализацию, а также использование абстрактных классов.
Определение интерфейсов
interface Shape {
fun area(): Double
fun perimeter(): Double
}
В этом примере определен интерфейс Shape с двумя методами: area и perimeter.
Реализация интерфейсов
class Circle(val radius: Double) : Shape {
override fun area(): Double {
return Math.PI * radius * radius
}
override fun perimeter(): Double {
return 2 * Math.PI * radius
}
}
Класс Circle реализует интерфейс Shape и предоставляет конкретные реализации методов area и perimeter.
Абстрактные классы
abstract class Animal(val name: String) {
abstract fun makeSound()
}
Абстрактный класс Animal с абстрактным методом makeSound, который должен быть реализован в подклассах.
class Dog(name: String) : Animal(name) {
override fun makeSound() {
println("Woof! Woof!")
}
}
Класс Dog наследует от абстрактного класса Animal и предоставляет реализацию метода makeSound.
Интерфейсы и абстрактные классы обеспечивают структуру программы и позволяют создавать гибкую архитектуру. Интерфейсы предоставляют чистое разделение контрактов и их реализаций, а абстрактные классы могут содержать как абстрактные, так и конкретные методы, предоставляя базовую функциональность.