สวิฟต์ | มรดกและการเอาชนะ
สวัสดีทุกคน!
ในบทความนี้ ฉันจะพูดถึงการสืบทอดใน Swift
หากคุณต้องการสนับสนุนฉัน มีสามขั้นตอนง่ายๆ: ตบมือ แชร์ และติดตามฉัน ขอบคุณล่วงหน้า!
ตามปกติคำถามทั่วไปของฉัน คุณอ่านบทความก่อนหน้านี้ของฉันหรือไม่ ถ้าไม่เช่นนั้นนี่คือ:
- สิ่งสำคัญที่ iOS Developer ทุกคนควรรู้ + จองคำแนะนำ
- การเขียนโปรแกรมเชิงโต้ตอบคืออะไร | หนังสือ RxSwift + โบนัส
- Async/รอใน Swift | มันคืออะไร?!
- SwiftLint คืออะไร? — การเดินทางสู่ Clean Code
- Grand Central Dispatch & DispatchQueue ใน Swift
- ของแข็งคืออะไร! — หลักการโบนัส DRY
- (เป็นไปได้) คำถามสัมภาษณ์และคำตอบสำหรับนักพัฒนา iOS รุ่นเยาว์ทุกคน
- 13 คำสั่ง Git ที่คุณจะต้องใช้ในการประกอบอาชีพ — Cheat Sheet
- วงจรชีวิตของ ViewController คืออะไร? — การพัฒนา iOS ด้วย Swift
- จะเป็นนักพัฒนาได้อย่างไร? || ทำไมคุณไม่ควรเป็น?
- ประเภทการอ้างอิงและค่าใน Swift — คืออะไร
- การทดสอบหน่วย | สวิฟต์
- Codable — เข้ารหัสได้/ถอดรหัสได้
- 7 แหล่งการเรียนรู้ Swift
- Objective-C คืออะไร?
- 14 โปรไฟล์ที่คุณต้องติดตามหากต้องการเป็น iOS Dev
- วิธีรองรับ “โหมดมืด” ในแอพ iOS — Swift, SwiftUI & Objective-C
- 15 คำถามสัมภาษณ์ที่คุณจะถูกถามในฐานะ iOS Developer
- จะสร้างแชทบอท AI โดยใช้ Swift ได้อย่างไร — ขอบคุณสำหรับ 100 ผู้ติดตาม!
Inherit แปลว่า รับมรดก ในภาษาการเขียนโปรแกรมเชิงวัตถุ การสืบทอดหมายถึงการสร้างคลาสอื่นที่มีคุณสมบัติเดียวกันจากคลาส สามประเด็นสำคัญ:
- เมื่อคลาสหนึ่งสืบทอดมาจากอีกคลาสหนึ่ง คลาสที่สืบทอดมาจะเรียกว่าคลาสย่อย
- คลาสที่สืบทอดมาเรียกว่า superclass
- คลาสใดๆ ที่ไม่ได้สืบทอดมาจากคลาสอื่นจะเรียกว่าคลาสพื้นฐาน
เอาชนะ
คลาสย่อยมีคุณสมบัติทั้งหมดของซูเปอร์คลาสที่ได้รับมา คุณสมบัติ วิธีการ ฯลฯ ทั้งหมดของซูเปอร์คลาสยังมีอยู่ในคลาสย่อย ในบางกรณี อาจจำเป็นต้องเปลี่ยนคุณสมบัติของคลาสย่อยและทำให้เป็นพิเศษสำหรับคลาสย่อย สถานการณ์ดังกล่าวเรียกว่าการเอาชนะ หากเราตรวจสอบตัวอย่างด้านล่าง เมธอด defineTheVehicleของ คลาส Vehicleจะถูกแทนที่ในคลาส Train ตอนนี้ เมธอด defineTheVehicleของคลาส Train เป็นไปตามที่เขียนไว้ในคลาส Train การแทนที่นี้ไม่ส่งผลกระทบต่อวิธีการของคลาสยานพาหนะ ( superclass )
การเข้าถึงคุณสมบัติ วิธีการ และสคริปต์ย่อยของ Super Class
เราใช้ "super" เพื่อกำหนด:
สำหรับเมธอด: super.method()
สำหรับคุณสมบัติ: super.someProperty
สำหรับสคริปต์ย่อย: super[someIndex]
ในที่นี้ คำว่า super หมายถึง superclass
วิธีป้องกันการเอาชนะ
หากเรากำหนดตัวแปร ฟังก์ชัน คลาส และอื่นๆ ด้วยคำว่า“final”หมายความว่าเราป้องกันไม่ให้สิ่งเหล่านั้นถูกแทนที่
ตัวอย่าง:
final var
final func { }
final class { }
static func {} //Cannot be overriden
final class func {} //Cannot be overriden
class func {} //Can be overriden
ตัวอย่างโค้ด
ในส่วนนี้ คุณจะเห็นตัวอย่างโค้ดที่เกี่ยวข้องกับหัวข้อของบทความนี้
class Vehicle {
// Properties, we define them as variable because they will change
var numberOfWheels: Int
var maxPassenger: Int
// Method
func defineTheVehicle() -> String {
return "It has \(numberOfWheels) wheels; Can take maximum \(maxPassenger) number of passengers."
}
// Initializer
init() {
numberOfWheels = 0
maxPassenger = 1
}
}
//The class of Motorcycle is subclass of the (super)class Vehicle.
class Motorcycle: Vehicle {
init() {
//We call our init from our superclass (Vehicle)
super.init()
numberOfWheels = 2
}
}
//The class of Train is subclass of the (super)class Vehicle.
class Train: Vehicle {
var speed: Double = 0.0
init() {
//We call our init from our superclass (Vehicle)
super.init()
maxPassenger = 200 //random number :D
numberOfWheels = 20 //random number :D
}
//Here we override the defineTheVehicle function.
override func defineTheVehicle() -> String {
return super.defineTheVehicle() + "; "
+ "\(speed) km/h"
}
}
โดยพื้นฐานแล้วนั่นคือทั้งหมดจากด้านข้างของฉัน ฉันหวังว่าบทความนี้จะช่วยคุณได้เล็กน้อย หากคุณชอบบทความของฉัน หากคุณคิดว่ามีประโยชน์ คุณสามารถคลิกปุ่ม "ติดตาม" และแบ่งปันบทความเพื่อเข้าถึงผู้คนมากขึ้น :)
คุณต้องการที่จะสนับสนุนฉัน? คุณมีสองตัวเลือก: ตบมือ แสดงความคิดเห็น แชร์ ติดตาม หรือซื้อกาแฟให้ฉัน
อย่าลืมติดตามเราบนทวิต เตอร์





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)