Junior
Jaka jest różnica między prostą klasą a klasą open w Swift?
sobes.tech AI
Odpowiedź od AI
W Swift domyślnie wszystkie klasy są oznaczone jako final — nie można ich dziedziczyć. Aby klasa mogła być dziedziczona, musi być zadeklarowana jako open lub public, ale między nimi istnieją ważne różnice:
open— najbardziej otwarty poziom dostępu. Klasa z modyfikatoremopenmoże być dziedziczona i jej metody mogą być nadpisywane zarówno wewnątrz, jak i na zewnątrz modułu.public— klasa jest dostępna do użycia poza modułem, ale dziedziczenie i nadpisywanie metod jest możliwe tylko w tym samym module.
W związku z tym, klasa open pozwala na rozszerzanie i modyfikowanie zachowania w innych modułach, a zwykła (np. public) — nie.
Przykład:
open class OpenClass {
open func greet() {
print("Hello from OpenClass")
}
}
public class PublicClass {
public func greet() {
print("Hello from PublicClass")
}
}
// W innym module można dziedziczyć po OpenClass i nadpisywać greet(),
// ale nie po PublicClass.