Какие знаешь способы добавления методов в существующий класс

«Какие знаешь способы добавления методов в существующий класс» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Наследование – создание подкласса, который расширяет функциональность родительского класса.
class CustomTextView : TextView() {
    fun setCustomText(text: String) { ... }
}
  1. Расширения (Extensions) – добавление методов без наследования.
fun TextView.setCustomText(text: String) { ... }
// Использование: textView.setCustomText("Hello")
  1. Декоратор (Decorator Pattern) – обёртка вокруг класса с добавлением новой логики.
class CustomTextDecorator(private val textView: TextView) {
    fun setCustomText(text: String) { ... }
}
  1. Рефлексия – динамическое добавление методов (не рекомендуется из-за производительности и безопасности).

  2. Аспектно-ориентированное программирование (AOP) – через инструменты вроде AspectJ (редко используется в Android).

Для Android чаще всего применяют Extensions (Kotlin) или наследование, если требуется глубокая модификация поведения.