Swift - klasy

Klasy w Swift 4 to bloki konstrukcyjne elastycznych konstrukcji. Podobnie jak w przypadku stałych, zmiennych i funkcji, użytkownik może definiować właściwości i metody klas. Swift 4 zapewnia nam funkcjonalność, dzięki której deklarując klasy użytkownicy nie muszą tworzyć interfejsów ani plików implementacyjnych. Swift 4 pozwala nam tworzyć klasy jako pojedynczy plik, a zewnętrzne interfejsy zostaną utworzone domyślnie po zainicjowaniu klas.

Korzyści z zajęć

  • Dziedziczenie przejmuje właściwości jednej klasy do innej klasy

  • Rzutowanie typów umożliwia użytkownikowi sprawdzenie typu klasy w czasie wykonywania

  • Deinicjatory dbają o zwolnienie zasobów pamięci

  • Zliczanie odwołań umożliwia instancji klasy posiadanie więcej niż jednego odwołania

Wspólne cechy klas i struktur

  • Właściwości są zdefiniowane w celu przechowywania wartości
  • Indeksy są zdefiniowane w celu zapewnienia dostępu do wartości
  • Metody są inicjowane w celu poprawy funkcjonalności
  • Stan początkowy jest definiowany przez inicjatory
  • Funkcjonalność jest rozszerzona poza wartości domyślne
  • Potwierdzenie standardów funkcjonalności protokołów

Składnia

Class classname {
   Definition 1
   Definition 2
   --- 
   Definition N
}

Definicja klasy

class student {
   var studname: String
   var mark: Int 
   var mark2: Int 
}

Składnia tworzenia instancji

let studrecord = student()

Przykład

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark = 300
}

let marks = studentMarks()
print("Mark is \(marks.mark)")

Po uruchomieniu powyższego programu przy użyciu placu zabaw otrzymujemy następujący wynik -

Mark is 300

Dostęp do właściwości klasy jako typów odwołań

Dostęp do właściwości klasy można uzyskać za pomocą „.” składnia. Nazwa właściwości jest oddzielona znakiem „.” po nazwie instancji.

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)")

Po uruchomieniu powyższego programu przy użyciu placu zabaw otrzymujemy następujący wynik -

Mark1 is 300
Mark2 is 400
Mark3 is 900

Operatory tożsamości klas

Klasy w Swift 4 odwołują się do wielu stałych i zmiennych wskazujących na jedną instancję. Aby dowiedzieć się o stałych i zmiennych wskazujących na konkretną instancję klasy, używane są operatory tożsamości. Instancje klas są zawsze przekazywane przez odwołanie. W klasach wystąpienia NSString, NSArray i NSDictionary są zawsze przypisywane i przekazywane jako referencje do istniejącej instancji, a nie jako kopia.

Identyczne z operatorami Nie identyczne z operatorami
Użyty operator to (===) Użyty operator to (! ==)
Zwraca wartość true, gdy dwie stałe lub zmienne wskazują na to samo wystąpienie Zwraca wartość true, gdy dwie stałe lub zmienne wskazują na inną instancję
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)")

Po uruchomieniu powyższego programu przy użyciu placu zabaw otrzymujemy następujący wynik -

main.SampleClass
main.SampleClass