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 rujukan

Atribut 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 identiti

Oleh 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
恒等运算符不恒等运算符
运算符为:===运算符为:!==
如果两个常量或者变量引用同一个类实例则返回 true如果两个常量或者变量引用不同一个类实例则返回 true

Operator Identiti

Operasi Operator ialah: == =Pengendalinya ialah: !==
Jika dua pemalar atau pembolehubah merujuk kepada contoh kelas yang sama, ia mengembalikan benarJika 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)")
}
Output pelaksanaan program di atas Hasilnya ialah: <🎜>rreeee<🎜>