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