
- Swift 教程
- Swift - 首頁
- Swift - 概述
- Swift - 環境
- Swift - 基本語法
- Swift - 變數
- Swift - 常量
- Swift - 字面量
- Swift - 註釋
- Swift 運算子
- Swift - 運算子
- Swift - 算術運算子
- Swift - 比較運算子
- Swift - 邏輯運算子
- Swift - 賦值運算子
- Swift - 位運算子
- Swift - 其他運算子
- Swift 高階運算子
- Swift - 運算子過載
- Swift - 算術溢位運算子
- Swift - 恆等運算子
- Swift - 範圍運算子
- Swift 資料型別
- Swift - 資料型別
- Swift - 整數
- Swift - 浮點數
- Swift - Double
- Swift - 布林值
- Swift - 字串
- Swift - 字元
- Swift - 類型別名
- Swift - 可選型別
- Swift - 元組
- Swift - 斷言和前提條件
- Swift 控制流
- Swift - 決策制定
- Swift - if 語句
- Swift - if...else if...else 語句
- Swift - if-else 語句
- Swift - 巢狀 if 語句
- Swift - switch 語句
- Swift - 迴圈
- Swift - for in 迴圈
- Swift - while 迴圈
- Swift - repeat...while 迴圈
- Swift - continue 語句
- Swift - break 語句
- Swift - fall through 語句
- Swift 集合
- Swift - 陣列
- Swift - 集合
- Swift - 字典
- Swift 函式
- Swift - 函式
- Swift - 巢狀函式
- Swift - 函式過載
- Swift - 遞迴
- Swift - 高階函式
- Swift 閉包
- Swift - 閉包
- Swift-逃逸和非逃逸閉包
- Swift - 自動閉包
- Swift 面向物件
- Swift - 列舉
- Swift - 結構體
- Swift - 類
- Swift - 屬性
- Swift - 方法
- Swift - 下標
- Swift - 繼承
- Swift-重寫
- Swift - 初始化
- Swift - 析構
- Swift 高階
- Swift - ARC 概述
- Swift - 可選鏈
- Swift - 錯誤處理
- Swift - 併發
- Swift - 型別轉換
- Swift - 巢狀型別
- Swift - 擴充套件
- Swift - 協議
- Swift - 泛型
- Swift - 訪問控制
- Swift - 函式與方法
- Swift - SwiftyJSON
- Swift - 單例類
- Swift 隨機數
- Swift 不透明型別和裝箱型別
- Swift 有用資源
- Swift - 線上編譯
- Swift - 快速指南
- Swift - 有用資源
- Swift - 討論
Swift - 繼承
繼承是面向物件程式設計中最常用的特性之一,它允許一個類(子類或派生類)繼承另一個類(基類或超類)的方法、屬性和功能。它提供了一種組織和重用程式碼的機制。它也用於在類之間建立層次結構關係。Swift 還提供了訪問控制修飾符來控制基類和子類中屬性和方法的可見性。
在 Swift 中,類可以進一步分為子類和超類:
子類 - 當一個類繼承另一個類的屬性、方法和函式時,它被稱為子類或派生類。
超類 - 一個包含屬性、方法和函式的類,其他類可以從中繼承,稱為超類或基類。
基類
不繼承其他類的方法、屬性或函式的類稱為基類。或者我們可以說基類是其他從中派生的類的基礎類。基類也稱為超類。它提供了一組可以在其子類之間共享的方法、屬性和行為。基類的定義方式與普通類相同,即使用 class 關鍵字。
語法
以下是基類的語法:
class BaseClassName{ // Properties // Methods }
示例
Swift 程式演示如何建立基類。
// Base class class StudDetails { // Properties var stname: String var mark1: Int var mark2: Int var mark3: Int // Initializer init(stname: String, mark1: Int, mark2: Int, mark3: Int) { self.stname = stname self.mark1 = mark1 self.mark2 = mark2 self.mark3 = mark3 } } // Instance of the base class let stObj = StudDetails(stname: "Swift", mark1: 98, mark2: 89, mark3: 76) // Accessing the Properties print(stObj.stname) print(stObj.mark1) print(stObj.mark2) print(stObj.mark3)
輸出
它將產生以下輸出:
Swift 98 89 76
子類
從基類或現有類建立的類稱為子類。子類繼承基類的方法和屬性,並且還可以擁有自己的屬性和方法。它還可以重寫從超類繼承的屬性和方法。子類也可以有子類,它們繼承或重寫直接基類(子類)和基類的屬性和方法,並且還可以擁有自己的其他屬性和方法。
子類的定義是使用 class 關鍵字後跟子類的名稱,冒號和它將從中派生的基類的名稱。在子類中,我們必須在子類的初始化器中使用super.init,以確保在執行子類的初始化程式碼之前執行基類的初始化程式碼。
語法
以下是子類的語法:
class SubClassName : BaseClassName{ // Properties // Methods }
示例
Swift 程式演示子類。
// Base Class class StudDetails { // Properties var name: String var age: Int var className: String // Initializer init(name: String, age: Int, className: String) { self.name = name self.age = age self.className = className } // Method func Show() { print("Name: \(name), Age: \(age), className: \(className)") } } // Sub class class Marks: StudDetails{ // Properties var mark1: Int var mark2: Int // Initializer init(mark1: Int, mark2: Int, name: String) { self.mark1 = mark1 self.mark2 = mark2 // This Initializer will execute before the Initializer of sub-class super.init(name: name, age: 18, className: "3rd") } // Overriding method of base class override func Show() { print("Mark1: \(mark1) and Mark2: \(mark2)") } } // Creating an instance of a subclass let obj = Marks(mark1: 23, mark2: 45, name: "Mohita") // Accessing the method obj.Show() // Accessing the properties of the base class using the subclass instance print("Name:", obj.name) print("Age:", obj.age)
輸出
它將產生以下輸出:
Mark1: 23 and Mark2: 45 Name: Mohita Age: 18
繼承型別
Swift 支援以下型別的繼承:
- 單一繼承
- 多級繼承
- 層次繼承
Swift 類不支援多重繼承,以避免一些複雜性和挑戰,例如菱形問題、耦合增加和初始化挑戰。但是,我們可以使用協議來實現多重繼承。
單一繼承
單一繼承是指一個類僅從一個超類派生的繼承,子類可以訪問超類所有屬性和方法。例如,類 Y 派生自類 X。

示例
Swift 程式演示單一繼承。
// Base Class class Employee { // Properties var name: String var age: Int // Initializer init(name: String, age: Int) { self.name = name self.age = age } // Method func Show() { print("Name: \(name), Age: \(age)") } } // Subclass class EmpDetails: Employee{ // Properties var department: String var salary: Int var joiningYear: Int // Initializer init(department: String, salary: Int, joiningYear: Int) { self.department = department self.salary = salary self.joiningYear = joiningYear // Calling superclass initializer super.init(name: "Rohit", age: 23) } // Method func Display() { print("Department: \(department), Salary: \(salary), and Joining Year: \(joiningYear)") } } // Creating an instance of a subclass let obj = EmpDetails(department: "HR", salary: 23000, joiningYear: 2021) // Accessing the method of superclass obj.Show() // Accessing the methods of the subclass obj.Display()
輸出
它將產生以下輸出:
Name: Rohit, Age: 23 Department: HR, Salary: 23000, and Joining Year: 2021
多級繼承
多級繼承是指一個類從另一個類派生,然後另一個類從子類派生。或者我們可以說,多級繼承是超過兩級繼承的鏈。例如,類 Y 派生自類 X,然後類 Z 派生自類 Y。

示例
Swift 程式演示多級繼承。
// Base Class class Employee { // Properties var name: String var age: Int // Initializer init(name: String, age: Int) { self.name = name self.age = age } // Method func Show() { print("Name: \(name), Age: \(age)") } } // Sub class class EmpDetails: Employee{ // Properties var department: String var salary: Int // Initializer init(department: String, salary: Int) { self.department = department self.salary = salary // Calling the initializer of Employee class super.init(name: "Rohit", age: 23) } // Method func Display() { print("Department: \(department) and Salary: \(salary)") } } // Another sub-class derived from EmpDetails class class EmpWork: EmpDetails{ var joiningYear : Int // Initializer init(joiningYear: Int) { self.joiningYear = joiningYear // Calling the initializer of EmpDetails class super.init(department: "HR", salary: 23000) } // Method func DisplayData(){ // Here we are accessing the Properties of Employee and EmpDetails classes print("Employee Name: \(name), \nDepartment: \(department), and Joining Year: \(joiningYear)") } } // Creating an instance of EmpWork class let obj = EmpWork(joiningYear: 2021) // Accessing the method obj.DisplayData()
輸出
它將產生以下輸出:
Name: Rohit, Age: 23 Department: HR, Salary: 23000, and Joining Year: 2021

混合繼承
混合繼承是指多個類從單個基類派生的繼承。這些類可以訪問和重寫基類的屬性和方法,並且可以擁有自己的屬性和方法。例如,類 Y 派生自類 X,然後類 Z 派生自類 X。
示例
Swift 程式演示混合繼承。
// Base Class class Employee { // Properties var name: String var age: Int // Initializer init(name: String, age: Int) { self.name = name self.age = age } // Method func Show() { print("Name: \(name), Age: \(age)") } } // Subclass derived from Employee class class EmpDetails: Employee { // Property var salary: Int // Initializer init(salary: Int) { self.salary = salary // Calling the initializer of Employee class super.init(name: "Rohit", age: 23) } // Method func Display() { print("Employee Name: \(name) and Salary: \(salary)") } } // Subclass derived from Employee class class EmpWork: Employee{ // Property var joiningYear : Int // Initializer init(joiningYear: Int) { self.joiningYear = joiningYear // Calling the initializer of Employee class super.init(name: "Mohina", age: 22) } // Method func Display(){ // Here we are accessing the properties of Employee and EmpWork classes print("Employee Name: \(name) and Joining Year: \(joiningYear)") } } // Creating an instance of a subclass let obj1 = EmpDetails(salary: 24000) let obj2 = EmpWork(joiningYear: 2022) // Accessing the method of EmpDetails class obj1.Display() // Accessing the method of EmpWork class obj2.Display()
輸出
它將產生以下輸出:
Employee Name: Rohit and Salary: 24000 Employee Name: Mohina and Joining Year: 2022