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