解释 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() { // 使用所需的格式显示学生信息。 } } 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 语言中最重要的概念,用于以适当的层次结构编写核心。始终尝试定义超类以将常见事物分开。