解釋 Swift 中類的用法以及繼承的優勢


簡介

本文將指導您瞭解類的用法以及在 Swift 語言中使用繼承的好處。

在本文中,我們將涵蓋以下內容:

  • 什麼是類,它在 Swift 中的用途是什麼?

  • 什麼是繼承,它的好處是什麼?

什麼是類?

在 Swift 語言中,類是屬性和方法的表示形式。我們使用類將屬性和方法封裝到具有相同特徵的單個實體中。

我們使用類在變數和常量中儲存資訊。類可以包含用於計算資訊並在需要時返回值的方法。

例如,我們可以建立一個名為 Student 的類來儲存諸如姓名、年齡、年級、分數、學校等資訊,使用變數。為了操作這些屬性,我們可以定義方法。

類的優勢

  • 可以透過使用類將一個類的特徵繼承到另一個類。

  • 在執行時,型別轉換允許使用者驗證類的型別。

  • 析構器釋放記憶體資源。

示例

在這個例子中,我們將建立一個 Student 類來儲存關於學生的某些基本資訊。我們將看到如何透過建立學生類來使用這些屬性。

class Student {
   var name: String
   var grade: Int = 0
   var score: Float = 0.0
   var city: String = ""
   var schoolName: String
   init(name: String, schoolName: String) {
      self.name = name
      self.schoolName = schoolName
   }
   func displayInfo() {
      // display the student information using the required format.
   }
}
let john = Student(name: "John Johnson", schoolName: "Notional School")
print("name: \(john.name)")
print("school name: \(john.schoolName)")

輸出

name: John Johnson
school name: Notional School

我們如何在類中儲存資訊?

基本上,我們可以使用屬性在類中儲存資訊。Swift 的類可用於訪問各種型別的屬性。

使用類中的屬性,我們可以讀取和寫入資訊。Swift 中有兩種型別的屬性:儲存屬性和計算屬性。

Swift 語言提供了不同型別的屬性

  • 儲存屬性 - 這些用於永久儲存資訊。只要該例項在記憶體中,它就會存在於記憶體中。一旦建立類的例項,它就會佔用記憶體空間。

  • 延遲儲存屬性 - 這些是特殊的儲存屬性,它們將在第一次訪問時計算。我們在宣告延遲屬性時使用 lazy 修飾符作為字首。

  • 計算屬性 - 對於類屬性的一些計算,我們可以使用計算屬性而不是更改原始值。為了實現這一點,我們可以使用返回計算值的計算屬性。

語法

在類中執行操作的語法

使用方法,我們可以在類中執行不同的操作。

func greeting(_ name: String) {
   print("Good morning, \(name)")
}

什麼是繼承?

繼承是一種將一個類的特徵和方法適配到另一個類的方式。透過繼承,我們可以透過向另一種型別新增補充特徵來擴充套件現有型別的功能。

當我們從另一個類(例如類 A)繼承一個類(例如類 B)時,類 B 稱為子類,類 A 稱為超類。

使用繼承的優勢

在 Swift 語言中使用繼承有一些好處。以下是一些好處:

  • 減少程式碼冗餘。

  • 提供更好的程式碼可重用性。

  • 在編寫程式碼時,父類和子類易於維護。

  • 我們可以透過覆蓋父類的現有功能來向子類新增額外的功能。

示例

在下面的例子中,我們將建立一個超類和一些子類,透過從超類繼承它們。讓我們看看超類在編寫程式碼時如何對我們有益。

import Foundation
// super class
class Person {
   var name: String
   var address: String
   var age: Int
   init(name: String, address: String, age: Int) {
      self.name = name
      self.address = address
      self.age = age
   }
   func isYoung() -> Bool {
      age >= 18
   }
}
// sub class
class Student: Person {
   var collegeName: String
   var grade: Int
   init(collegeName: String, grade: Int, name: String, address: String, age: Int) {
      self.collegeName = collegeName
      self.grade = grade
      super.init(name: name, address: address, age: age)
   }
   func checkAgeEligibility() {
      if self.isYoung() {
         print("\(self.name) is eligible to take admission.")
      } else {
         print("\(self.name) is not eligible to take admission.")
      }
   }
}
// sub class
class Voter: Person {
   var isPreviouslyCasted: Bool = false
   func eligibleToVote() {
      if self.isYoung() && isPreviouslyCasted {
         print("\(self.name) is eligible to cast vote.")
      } else {
         print("\(self.name) is not eligible to cast vote.")
      }
   }
}
let student = Student(collegeName: "Primary School", grade: 11, name: "Amit Bhalla", address: "New Delhi", age: 13)
student.checkAgeEligibility()
let voter = Voter(name: "Sunil Chandra", address: "Bangalore", age: 21)
voter.eligibleToVote()

輸出

Amit Bhalla is not eligible to take admission.
Sunil Chandra is not eligible to cast vote.

解釋

在上面的例子中,我們建立了一個名為 Person 的類,其中包含 isYoung() 方法來檢查人的資格。

Student 和 Voter 類現在從 Person 類繼承,並添加了與子類相關的額外方法。

超類有一個方法,所有子類都可以訪問。因此,我們可以利用超類的功能。

結論

繼承是 Swift 語言中編寫核心內容以形成正確層次結構的最重要概念。始終嘗試定義超類以使通用內容分離。

更新於:2022-12-21

267 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.