Junior
Είναι η κλάση open τελική ή μη τελική;
sobes.tech AI
Απάντηση από AI
Οριστικό όχι. Η λέξη-κλειδί open υποδεικνύει σαφώς ότι μπορείτε να κληρονομήσετε από αυτήν την κλάση και να υπερεκχωρήσετε τα μέλη της.
open class BaseClass {
open func someMethod() {
// Προεπιλεγμένη υλοποίηση
}
}
class DerivedClass: BaseClass {
override open func someMethod() {
// Υπερεκχωρημένη υλοποίηση
}
}
Ας συγκρίνουμε με άλλους τροποποιητές πρόσβασης:
| Τροποποιητής | Κληρονομιά | Υπερεκχώρηση μελών |
|---|---|---|
private |
Όχι (εντός αρχείου/περιοχής) | Όχι |
fileprivate |
Όχι (εντός αρχείου) | Όχι |
internal |
Ναι (εντός του module) | Ναι (εντός του module) |
public |
Ναι (εντός του module) | Ναι (εντός του module) |
open |
Ναι (σε οποιοδήποτε module) | Ναι (σε οποιοδήποτε module) |
final |
Όχι | Όχι |
Μια κλάση ή μέλος που σημειώνεται ως final δεν μπορεί να υπερεκχωρηθεί ή να κληρονομηθεί, καθιστώντας το τελικό. Το open κάνει το αντίθετο.