Sobes.tech
Junior — Middle

Jak zaimplementować dziedziczenie po klasie zadeklarowanej jako sealed?

sobes.tech AI

Odpowiedź od AI

W Kotlinie klasa zadeklarowana jako sealed ogranicza dziedziczenie tylko w tym samym pliku, w którym jest zadeklarowana. Oznacza to, że dziedziczenie po klasie sealed jest możliwe tylko w tym samym pliku, w którym jest ona zdefiniowana.

Jeśli klasa jest zadeklarowana jako sealed i znajduje się w innym pliku, nie można po niej dziedziczyć.

Aby zaimplementować dziedziczenie po klasie sealed, należy:

  • Znajdować się w tym samym pliku, co zadeklarowana klasa sealed.
  • Zadeklarować podklasy w tym pliku.

Przykład:

sealed class Result

class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

Jeśli wymagana jest rozszerzalność poza plikiem, klasa sealed nie jest odpowiednia; należy użyć zwykłej klasy otwartej lub interfejsu.