Sobes.tech
Junior — Middle

Ποιοι τύποι κατασκευαστών υλοποιούνται στην κλάση και πώς διαφέρουν;

sobes.tech AI

Απάντηση από AI

Στην κλάση Swift, συνήθως υλοποιούνται οι ακόλουθοι τύποι κατασκευαστών (αρχικοποιητών):

  1. Προεπιλεγμένος αρχικοποιητής (default initializer) — δημιουργείται αυτόματα αν όλες οι ιδιότητες έχουν προεπιλεγμένες τιμές και δεν υπάρχουν άλλοι αρχικοποιητές.

  2. Αρχικοποιητής με παραμέτρους (designated initializer) — ο κύριος αρχικοποιητής που αρχικοποιεί όλες τις ιδιότητες της κλάσης. Η κλήση άλλων αρχικοποιητών μέσα στην κλάση γίνεται μέσω self.init.

  3. Βολικοί αρχικοποιητές (convenience initializer) — βοηθητικοί αρχικοποιητές που καλούν τον designated initializer. Χρησιμοποιούνται για να απλοποιήσουν τη δημιουργία αντικειμένων με διαφορετικά σύνολα παραμέτρων.

Διαφορές:

  • Οι designated αρχικοποιητές αρχικοποιούν όλες τις ιδιότητες και καλούν τους αρχικοποιητές της υπερκλάσης.
  • Οι convenience αρχικοποιητές καλούν άλλους αρχικοποιητές της ίδιας κλάσης και δεν μπορούν να αρχικοποιήσουν άμεσα ιδιότητες.

Παράδειγμα:

class Person {
    var name: String
    var age: Int

    // Designated initializer
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // Convenience initializer
    convenience init(name: String) {
        self.init(name: name, age: 0) // κλήση του designated
    }
}

Έτσι, οι κατασκευαστές παρέχουν ευελιξία στην αρχικοποίηση αντικειμένων με διαφορετικά παραμέτρους και διασφαλίζουν την ορθή αρχικοποίηση όλων των ιδιοτήτων.