Sobes.tech
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 κάνει το αντίθετο.