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 :

引用不相同的类实例 SampleClass
Autres extensions