Kelas pantas
Kelas Swift ialah binaan umum dan fleksibel untuk kod bangunan.
Kita boleh menentukan sifat (pemalar, pembolehubah) dan kaedah untuk kelas.
Tidak seperti bahasa pengaturcaraan lain, Swift tidak memerlukan anda membuat antara muka dan fail pelaksanaan yang berasingan untuk kelas tersuai. Apa yang anda perlu lakukan ialah menentukan kelas dalam satu fail, dan sistem secara automatik menjana antara muka luaran kepada kod lain.
Perbandingan kelas dan struktur
Kelas dan struktur dalam Swift mempunyai banyak persamaan. Perkara biasa ialah:
Tentukan atribut untuk menyimpan nilai
Tentukan kaedah untuk menyediakan fungsi
Tentukan skrip tambahan untuk mengakses nilai
Tentukan pembina untuk menjana nilai permulaan
Perluas untuk meningkatkan kefungsian pelaksanaan lalai
Mematuhi protokol untuk menyediakan fungsi standard untuk kelas tertentu
Berbanding dengan struktur, kelas mempunyai fungsi tambahan berikut:
Warisan membenarkan satu kelas untuk mewarisi ciri kelas lain
Penukaran jenis membolehkan jenis contoh kelas diperiksa dan ditafsirkan pada masa jalan
Destructor membenarkan contoh kelas untuk melepaskan sebarang sumber yang diperuntukkan
Pengiraan rujukan membenarkan berbilang rujukan kepada kelas
Sintaks:
Class classname { Definition 1 Definition 2 …… Definition N }
Definasi kelas
class student{ var studname: String var mark: Int var mark2: Int }
Kelas instan:
let studrecord = student()
Instance
import Cocoa class MarksStruct { var mark: Int init(mark: Int) { self.mark = mark } } class studentMarks { var mark = 300 } let marks = studentMarks() print("成绩为 \(marks.mark)")
Hasil output pelaksanaan program di atas ialah:
成绩为 300🎜>
Mengakses atribut kelas sebagai jenis rujukanAtribut kelas boleh diakses melalui
.. Formatnya ialah: Nama kelas instance:
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)")Output pelaksanaan program di atas ialah:
Mark1 is 300 Mark2 is 400 Mark3 is 900
Operator identitiOleh kerana kelas ialah jenis rujukan, mungkin terdapat berbilang pemalar dan pembolehubah yang merujuk contoh kelas tertentu di latar belakang pada masa yang sama. Untuk menentukan sama ada dua pemalar atau pembolehubah merujuk kepada contoh kelas yang sama, Swift mempunyai dua pengendali identiti terbina dalam:
Operator Identiti
| Operator Identiti | ||||||
---|---|---|---|---|---|---|---|
Operasi Operator ialah: == = | Pengendalinya ialah: !== | ||||||
Jika dua pemalar atau pembolehubah merujuk kepada contoh kelas yang sama, ia mengembalikan benar td> | Jika dua pemalar atau pembolehubah merujuk kepada kejadian kelas yang berbeza, kembalikan true |
Instance
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)") }