0Pricing
Swift Academy · บทเรียน

การสืบทอดคลาสและคีย์เวิร์ด super

การสร้างคลาสย่อย การเรียก super.init() และการขยายพฤติกรรมของคลาสแม่

การสืบทอดคลาสและคีย์เวิร์ด super เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

คลาสรองรับการสืบทอด — คลาสย่อยสามารถขยายหรือปรับเฉพาะคลาสแม่ได้ ความสามารถนี้ช่วยให้นำโค้ดกลับมาใช้ซ้ำและรองรับพหุสัณฐาน ซึ่งเป็นแกนหลักของการออกแบบเชิงวัตถุ

การกำหนดคลาสย่อย

```swift class Animal { var name: String init(name: String) { self.name = name } func speak() { print("...") } } class Dog: Animal { func fetch() { print("\(name) fetches!") } } let d = Dog(name: "Rex") d.speak() // "..." d.fetch() // "Rex fetches!" ```

super.init() — การเรียกที่จำเป็น

```swift class Vehicle { var speed: Double init(speed: Double) { self.speed = speed } } class Car: Vehicle { var brand: String init(brand: String, speed: Double) { self.brand = brand super.init(speed: speed) // must call super } } ```

การเริ่มต้นสองระยะ

กฎการเริ่มต้นสองระยะของ Swift: 1. ต้องกำหนดคุณสมบัติที่จัดเก็บไว้ของตนเองทั้งหมด *ก่อน* เรียก `super.init()` 2. หลังจากเรียก `super.init()` แล้ว คุณสามารถปรับแต่งคุณสมบัติที่สืบทอดมาได้ วิธีนี้ป้องกันไม่ให้คุณใช้หน่วยความจำที่ยังไม่ได้เริ่มต้น

การเรียกเมธอดของคลาสแม่

```swift class Shape { func draw() { print("Drawing shape") } } class Circle: Shape { override func draw() { super.draw() // call parent implementation print("Drawing circle") } } ```

การสืบทอดคุณสมบัติ

คลาสย่อยจะสืบทอดคุณสมบัติทั้งหมดของคลาสแม่: ```swift class Person { var name: String = "" var age: Int = 0 } class Employee: Person { var company: String = "" } let e = Employee() e.name = "Alice" e.company = "Acme" ```

ตัวเริ่มต้นแบบกำหนดหลักกับแบบอำนวยความสะดวก

• *แบบกำหนดหลัก* — กำหนดค่าเริ่มต้นให้คุณสมบัติทั้งหมดอย่างสมบูรณ์ และเรียก `super.init()` • *แบบอำนวยความสะดวก* — มอบหมายการสร้างให้ตัวเริ่มต้นอื่นด้วย `self.init()` ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

ตัวเริ่มต้นแบบ required init

ทำเครื่องหมาย init ด้วย `required` เพื่อบังคับให้คลาสย่อยทั้งหมดต้องนำไปใช้: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` มักใช้เมื่อเมธอดโรงงานจำเป็นต้องสร้างอินสแตนซ์ผ่านโปรโตคอล

ลำดับชั้นของคลาสและชนิด

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` `Dog` IS-A `Animal` — อินสแตนซ์ของคลาสย่อยตรงตามข้อกำหนดชนิดของคลาสแม่

การสืบทอดเดี่ยว

คลาสของ Swift รองรับการสืบทอดแบบ *เดี่ยว* เท่านั้น (มีคลาสแม่หนึ่งคลาส) แต่คลาสหนึ่งคลาสสามารถสอดคล้องกับโปรโตคอลได้หลายรายการ: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` โปรโตคอลคือกลไกของ Swift สำหรับการสืบทอดพฤติกรรมหลายรูปแบบ

ตรวจสอบความเข้าใจ

ในตัวเริ่มต้นแบบกำหนดหลักของคลาสย่อย ต้องเรียก `super.init()` เมื่อใด

สรุปทบทวน

ประเด็นสำคัญ: • สร้างคลาสย่อยด้วย `class Sub: Super` • เรียก `super.init()` หลังจากกำหนดคุณสมบัติของคลาสนั้นเองแล้ว • การเริ่มต้นสองระยะ: กำหนดคุณสมบัติของคลาสนั้นเองก่อน แล้วจึงเรียกคลาสแม่ • `super.method()` เรียกการทำงานของคลาสแม่ • Swift มีการสืบทอดเดี่ยว ใช้โปรโตคอลสำหรับพฤติกรรมหลายรูปแบบ ถัดไป: override, final และการป้องกันการสร้างคลาสย่อย

คำถามที่พบบ่อย

บทเรียน “การสืบทอดคลาสและคีย์เวิร์ด super” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสืบทอดคลาสและคีย์เวิร์ด super” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสืบทอดคลาสและคีย์เวิร์ด super”

การสร้างคลาสย่อย การเรียก super.init() และการขยายพฤติกรรมของคลาสแม่ คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การสืบทอดคลาสและคีย์เวิร์ด super” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสืบทอดคลาสและคีย์เวิร์ด super
  2. override, final และการป้องกันการสร้างคลาสย่อย
  3. การแปลงชนิด: is, as?, as! และ as
  4. ตัวทำลายและวงจรชีวิตหน่วยความจำ
← กลับไปที่ Swift Academy