Classes Swift
Les classes Swift sont des constructions polyvalentes et flexibles utilisées pour écrire du code.
Nous pouvons définir des propriétés (constantes, variables) et des méthodes pour une classe.
Contrairement à d'autres langages de programmation, Swift ne vous oblige pas à créer des fichiers d'interface et d'implémentation séparés pour les classes personnalisées. Tout ce que vous avez à faire est de définir une classe dans un seul fichier ; le système génère automatiquement une interface externe pour le reste du code.
Comparaison des classes et des structures
En Swift, les classes et lesstructurespartagent de nombreuses similitudes. Les points communs sont :
- Définir des propriétés pour stocker des valeurs
- Définir des méthodes pour fournir des fonctionnalités
- Définir des indices pour accéder aux valeurs
- Définir des initialiseurs pour générer des valeurs d'initialisation
- Utiliser des extensions pour ajouter des fonctionnalités implémentées par défaut
- Se conformer à des protocoles pour fournir des fonctionnalités standard à une classe
Comparées aux structures, les classes possèdent également les fonctionnalités supplémentaires suivantes :
- L'héritage permet à une classe d'hériter des caractéristiques d'une autre classe
- Le transtypage permet de vérifier et d'interpréter le type d'une instance de classe à l'exécution
- Les désinitialiseurs permettent à une instance de classe de libérer toutes les ressources qui lui ont été allouées
- Le comptage de références permet d'avoir plusieurs références vers une instance de classe
Syntaxe :
class classname {
Definition 1
Definition 2
……
Definition N
}
Définition de classe
class student{
var studname: String
var mark: Int
var mark2: Int
}
Instanciation d'une classe :
let studrecord = student()
Exemple
import Cocoa
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
print("成绩为 \(marks.mark)")
La sortie du programme ci-dessus est :
成绩为 300
Accéder aux propriétés de classe en tant que types de référence
Les propriétés de classe sont accessibles via.pour y accéder. Le format est :instantiatedClassName.propertyName:
import Cocoa
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)")
La sortie du programme ci-dessus est :
Mark1 is 300 Mark2 is 400 Mark3 is 900
Opérateurs d'identité
Comme les classes sont des types de référence, il est possible que plusieurs constantes et variables référencent la même instance de classe en arrière-plan.
Afin de déterminer si deux constantes ou variables font référence à la même instance de classe, Swift intègre deux opérateurs d'identité :
| Opérateur d'identité | Opérateur de non-identité |
|---|---|
| L'opérateur est : === | L'opérateur est : !== |
| Renvoie true si deux constantes ou variables référencent la même instance de classe | Renvoie true si deux constantes ou variables référencent des instances de classe différentes |
Exemple
import Cocoa
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")
if spClass1 === spClass2 {// false
print("引用相同的类实例 \(spClass1)")
}
if spClass1 !== spClass2 {// true
print("引用不相同的类实例 \(spClass2)")
}
La sortie du programme ci-dessus est :
引用不相同的类实例 SampleClassAutres extensions