Приведи пример нарушения принципа подстановки в Android SDK

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

Ответ

Нарушение принципа подстановки Лисков (LSP) можно наблюдать в ListView и RecyclerView.

Пример:

val listView: ListView = findViewById(R.id.listView)
listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)

// Нарушение LSP: RecyclerView.Adapter несовместим с ListView.Adapter
val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
recyclerView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items) // Ошибка компиляции

Хотя оба адаптера служат одной цели, они не взаимозаменяемы из-за разных интерфейсов. Это нарушает LSP, так как подкласс (RecyclerView.Adapter) не может заменить базовый (ListView.Adapter).