Swift 类(千字长文)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言:Swift 类——构建复杂功能的基石

在 Swift 开发中,类(Class)是面向对象编程的核心概念之一。它如同一座“代码大厦”的蓝图,通过定义属性、方法和行为,帮助开发者高效组织代码逻辑。无论是构建移动应用、服务器端服务,还是复杂的数据处理系统,掌握 Swift 类的设计与应用,都能显著提升代码的可维护性和扩展性。本文将从基础概念到高级技巧,结合实例深入解析 Swift 类的使用方法,帮助开发者系统性地理解这一关键工具。


一、类的定义与实例化:从蓝图到具体对象

1.1 类的定义语法

在 Swift 中,使用 class 关键字定义一个类,并通过大括号包裹其成员属性和方法。例如:

class Dog {  
    var name: String  
    var age: Int  

    init(name: String, age: Int) {  
        self.name = name  
        self.age = age  
    }  
}  

核心概念解析

  • 属性(Properties)nameage 是存储属性,用于存储对象的状态。
  • 初始化方法(Initializer)init 方法负责在创建对象时初始化属性值。
  • self 关键字:用于区分类的属性与参数的同名变量,避免歧义。

1.2 对象的实例化

通过 () 符号调用初始化方法,即可创建类的实例:

let myDog = Dog(name: "Buddy", age: 3)  
print(myDog.name) // 输出:Buddy  

比喻理解
将类比作“蓝图”,实例化就是用蓝图建造一座具体的房子。每座房子(实例)都拥有独立的属性值,但遵循相同的结构(类定义)。


二、类的属性:存储与计算的双重角色

2.1 存储属性(Stored Properties)

存储属性直接保存值,如 nameage。它们可以在初始化方法中赋值,或通过默认值声明:

class Cat {  
    var species: String = "Domestic" // 默认值  
    var weight: Double  
    init(weight: Double) {  
        self.weight = weight  
    }  
}  

2.2 计算属性(Computed Properties)

计算属性不存储值,而是通过 getter 和 setter 动态计算结果。例如:

class Rectangle {  
    var width: Double  
    var height: Double  

    var area: Double {  
        return width * height  
    }  

    init(width: Double, height: Double) {  
        self.width = width  
        self.height = height  
    }  
}  

let rect = Rectangle(width: 5, height: 3)  
print(rect.area) // 输出:15  

比喻理解
存储属性如同仓库,直接保存物品;计算属性则像计算器,根据现有数据实时生成结果。


三、类的方法:封装行为的逻辑容器

3.1 实例方法(Instance Methods)

实例方法通过 self 访问自身属性,用于操作对象的状态。例如:

class BankAccount {  
    var balance: Double = 0  

    func deposit(amount: Double) {  
        balance += amount  
    }  

    func withdraw(amount: Double) -> Bool {  
        if balance >= amount {  
            balance -= amount  
            return true  
        } else {  
            return false  
        }  
    }  
}  

let account = BankAccount()  
account.deposit(amount: 100)  
print(account.balance) // 输出:100  

3.2 类方法(Type Methods)

使用 staticclass 关键字定义的类方法,无需实例即可调用:

class MathHelper {  
    static func square(number: Int) -> Int {  
        return number * number  
    }  
}  

print(MathHelper.square(number: 5)) // 输出:25  

四、继承与多态:构建代码的层级结构

4.1 继承(Inheritance)

通过 : 符号让子类继承父类的属性和方法:

class Animal {  
    func makeSound() {  
        print("Animal sound")  
    }  
}  

class Dog: Animal {  
    override func makeSound() {  
        print("Bark!")  
    }  
}  

let dog = Dog()  
dog.makeSound() // 输出:Bark!  

多态性:子类可以覆盖(Override)父类的方法,实现不同的行为。

4.2 重用与扩展

通过 super 关键字调用父类方法:

class Cat: Animal {  
    override func makeSound() {  
        super.makeSound()  
        print("Meow!") // 扩展父类功能  
    }  
}  

五、类的高级特性:扩展与协议

5.1 扩展(Extension)

通过扩展为现有类添加新功能,无需修改原代码:

extension Dog {  
    func run() {  
        print("The dog is running!")  
    }  
}  

5.2 协议(Protocol)

定义类必须遵循的“合同”,确保一致性:

protocol Drivable {  
    func drive()  
}  

class Car: Drivable {  
    func drive() {  
        print("Car is driving!")  
    }  
}  

六、案例实战:构建一个完整的 Swift 类

6.1 需求场景

设计一个 Student 类,包含以下功能:

  • 记录姓名、年龄、成绩
  • 计算平均分
  • 判断是否及格

6.2 代码实现

class Student {  
    var name: String  
    var age: Int  
    var scores: [Double]  

    init(name: String, age: Int, scores: [Double]) {  
        self.name = name  
        self.age = age  
        self.scores = scores  
    }  

    // 计算属性:平均分  
    var averageScore: Double {  
        return scores.reduce(0, +) / Double(scores.count)  
    }  

    // 实例方法:判断是否及格  
    func isPassing() -> Bool {  
        return averageScore >= 60  
    }  
}  

// 使用示例  
let alice = Student(name: "Alice", age: 18, scores: [75, 80, 65])  
print(alice.averageScore) // 输出:73.333...  
print(alice.isPassing()) // 输出:true  

结论:掌握 Swift 类,构建灵活的代码架构

通过本文的讲解,我们系统性地探索了 Swift 类的定义、属性、方法、继承、协议等核心概念,并结合案例演示了其实际应用。对于开发者而言,类不仅是代码组织的工具,更是实现复杂功能、复用逻辑、降低耦合度的重要手段。

关键总结

  1. 类是面向对象编程的基础,通过封装、继承和多态提升代码的可维护性;
  2. 属性与方法共同定义了对象的行为与状态,需根据需求合理选择存储或计算属性;
  3. 继承与协议帮助开发者构建模块化的代码结构,避免重复劳动。

建议读者通过实际项目练习,例如设计一个“图书管理系统”或“购物车”类,进一步巩固对 Swift 类的理解。掌握这些技能后,开发者将能更自信地应对复杂项目开发挑战,为职业成长打下坚实基础。

最新发布