Swift - คลาส

คลาสใน Swift 4 เป็นกลุ่มส่วนประกอบของโครงสร้างที่ยืดหยุ่น เช่นเดียวกับค่าคงที่ตัวแปรและฟังก์ชันผู้ใช้สามารถกำหนดคุณสมบัติและวิธีการของคลาสได้ Swift 4 มอบฟังก์ชันการทำงานที่ในขณะที่ประกาศคลาสผู้ใช้ไม่จำเป็นต้องสร้างอินเทอร์เฟซหรือไฟล์การนำไปใช้งาน Swift 4 ช่วยให้เราสร้างคลาสเป็นไฟล์เดียวและอินเทอร์เฟซภายนอกจะถูกสร้างขึ้นตามค่าเริ่มต้นเมื่อเริ่มต้นคลาสแล้ว

ประโยชน์ของการมีคลาส

  • การสืบทอดได้รับคุณสมบัติของคลาสหนึ่งไปยังคลาสอื่น

  • การคัดเลือกประเภทช่วยให้ผู้ใช้สามารถตรวจสอบประเภทคลาสได้ในขณะทำงาน

  • Deinitializers ดูแลการปล่อยทรัพยากรหน่วยความจำ

  • การนับการอ้างอิงช่วยให้อินสแตนซ์คลาสมีการอ้างอิงมากกว่าหนึ่งรายการ

ลักษณะทั่วไปของชั้นเรียนและโครงสร้าง

  • คุณสมบัติถูกกำหนดเพื่อเก็บค่า
  • Subscripts ถูกกำหนดไว้สำหรับให้การเข้าถึงค่า
  • วิธีการเริ่มต้นเพื่อปรับปรุงฟังก์ชันการทำงาน
  • สถานะเริ่มต้นถูกกำหนดโดย initializers
  • ฟังก์ชันการทำงานถูกขยายเกินค่าเริ่มต้น
  • การยืนยันมาตรฐานการทำงานของโปรโตคอล

ไวยากรณ์

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

นิยามคลาส

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

ไวยากรณ์สำหรับการสร้างอินสแตนซ์

let studrecord = student()

ตัวอย่าง

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

class studentMarks {
   var mark = 300
}

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

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

Mark is 300

การเข้าถึงคุณสมบัติคลาสเป็นประเภทอ้างอิง

คุณสมบัติของคลาสสามารถเข้าถึงได้โดย '.' ไวยากรณ์ ชื่อคุณสมบัติคั่นด้วย "." หลังชื่ออินสแตนซ์

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

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

Mark1 is 300
Mark2 is 400
Mark3 is 900

คลาส Identity Operators

คลาสใน Swift 4 หมายถึงค่าคงที่และตัวแปรหลายตัวที่ชี้ไปที่อินสแตนซ์เดียว เพื่อทราบเกี่ยวกับค่าคงที่และตัวแปรที่ชี้ไปยังตัวดำเนินการเอกลักษณ์อินสแตนซ์คลาสเฉพาะ อินสแตนซ์คลาสจะถูกส่งผ่านโดยการอ้างอิงเสมอ ในอินสแตนซ์ Classes NSString, NSArray และ NSDictionary จะถูกกำหนดและส่งต่อไปรอบ ๆ เป็นการอ้างอิงถึงอินสแตนซ์ที่มีอยู่เสมอแทนที่จะเป็นสำเนา

เหมือนกับ Operators ไม่เหมือนกับตัวดำเนินการ
ตัวดำเนินการที่ใช้คือ (===) ตัวดำเนินการที่ใช้คือ (! ==)
ส่งคืนค่าจริงเมื่อค่าคงที่หรือตัวแปรสองตัวชี้ไปที่อินสแตนซ์เดียวกัน ส่งคืนค่าจริงเมื่อค่าคงที่หรือตัวแปรสองตัวชี้ไปยังอินสแตนซ์อื่น
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)")

เมื่อเรารันโปรแกรมข้างต้นโดยใช้สนามเด็กเล่นเราจะได้ผลลัพธ์ดังนี้ -

main.SampleClass
main.SampleClass