Ποιοι τύποι κατασκευαστών υλοποιούνται στην κλάση και πώς διαφέρουν;
sobes.tech AI
Απάντηση από AI
Στην κλάση Swift, συνήθως υλοποιούνται οι ακόλουθοι τύποι κατασκευαστών (αρχικοποιητών):
-
Προεπιλεγμένος αρχικοποιητής (default initializer) — δημιουργείται αυτόματα αν όλες οι ιδιότητες έχουν προεπιλεγμένες τιμές και δεν υπάρχουν άλλοι αρχικοποιητές.
-
Αρχικοποιητής με παραμέτρους (designated initializer) — ο κύριος αρχικοποιητής που αρχικοποιεί όλες τις ιδιότητες της κλάσης. Η κλήση άλλων αρχικοποιητών μέσα στην κλάση γίνεται μέσω
self.init. -
Βολικοί αρχικοποιητές (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
}
}
Έτσι, οι κατασκευαστές παρέχουν ευελιξία στην αρχικοποίηση αντικειμένων με διαφορετικά παραμέτρους και διασφαλίζουν την ορθή αρχικοποίηση όλων των ιδιοτήτων.