解释 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告