Swift - Classi
Le classi in Swift 4 sono elementi costitutivi di costrutti flessibili. Analogamente a costanti, variabili e funzioni, l'utente può definire proprietà e metodi di classe. Swift 4 ci fornisce la funzionalità che durante la dichiarazione delle classi gli utenti non devono creare interfacce o file di implementazione. Swift 4 ci consente di creare classi come un singolo file e le interfacce esterne verranno create per impostazione predefinita una volta inizializzate le classi.
Vantaggi di avere lezioni
L'ereditarietà acquisisce le proprietà di una classe in un'altra classe
Il casting del tipo consente all'utente di controllare il tipo di classe in fase di esecuzione
I deinizializzatori si occupano del rilascio delle risorse di memoria
Il conteggio dei riferimenti consente all'istanza della classe di avere più di un riferimento
Caratteristiche comuni di classi e strutture
- Le proprietà sono definite per memorizzare i valori
- I pedici sono definiti per fornire l'accesso ai valori
- I metodi vengono inizializzati per migliorare la funzionalità
- Lo stato iniziale è definito dagli inizializzatori
- Le funzionalità vengono espanse oltre i valori predefiniti
- Conferma degli standard di funzionalità del protocollo
Sintassi
Class classname {
Definition 1
Definition 2
---
Definition N
}
Definizione di classe
class student {
var studname: String
var mark: Int
var mark2: Int
}
La sintassi per la creazione di istanze
let studrecord = student()
Esempio
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
print("Mark is \(marks.mark)")
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
Mark is 300
Accesso alle proprietà della classe come tipi di riferimento
È possibile accedere alle proprietà della classe con "." sintassi. Il nome della proprietà è separato da un "." dopo il nome dell'istanza.
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark1 = 300
var mark2 = 400
var mark3 = 900
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
Mark1 is 300
Mark2 is 400
Mark3 is 900
Operatori di identità di classe
Le classi in Swift 4 fanno riferimento a più costanti e variabili che puntano a una singola istanza. Per conoscere le costanti e le variabili che puntano a una particolare istanza di classe, vengono utilizzati gli operatori di identità. Le istanze di classe vengono sempre passate per riferimento. Nelle classi le istanze NSString, NSArray e NSDictionary vengono sempre assegnate e passate come riferimento a un'istanza esistente, anziché come copia.
Identico agli operatori | Non identico agli operatori |
---|---|
L'operatore utilizzato è (===) | L'operatore utilizzato è (! ==) |
Restituisce vero quando due costanti o variabili puntano a una stessa istanza | Restituisce vero quando due costanti o variabili puntano a un'istanza diversa |
class SampleClass: Equatable {
let myProperty: String
init(s: String) {
myProperty = s
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}
let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")
spClass1 === spClass2 // false
print("\(spClass1)")
spClass1 !== spClass2 // true
print("\(spClass2)")
Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:
main.SampleClass
main.SampleClass