Junior
Ποια είναι η διαφορά μεταξύ μιας απλής κλάσης και μιας open κλάσης στο Swift;
sobes.tech AI
Απάντηση από AI
Στο Swift, από προεπιλογή, όλες οι κλάσεις είναι final — δεν μπορούν να κληρονομηθούν. Για να επιτραπεί η κληρονομιά μιας κλάσης, πρέπει να δηλωθεί ως open ή public, αλλά υπάρχουν σημαντικές διαφορές:
open— το πιο ανοιχτό επίπεδο πρόσβασης. Μια κλάση με τον τροποποιητήopenμπορεί να κληρονομηθεί και οι μέθοδοι της μπορούν να υπερισχύσουν τόσο εντός όσο και εκτός του module.public— η κλάση είναι διαθέσιμη για χρήση εκτός του module, αλλά η κληρονομιά και η υπερισχύση μεθόδων είναι δυνατές μόνο εντός του ίδιου module.
Έτσι, μια ανοιχτή κλάση επιτρέπει την επέκταση και την τροποποίηση της συμπεριφοράς σε άλλα modules, ενώ μια απλή (π.χ., public) — όχι.
Παράδειγμα:
open class OpenClass {
open func greet() {
print("Hello from OpenClass")
}
}
public class PublicClass {
public func greet() {
print("Hello from PublicClass")
}
}
// Σε άλλο module, μπορεί να κληρονομήσει κανείς από το OpenClass και να υπερισχύσει το greet(),
// αλλά όχι από το PublicClass.