21 面向对象编程之属性与方法

在 Swift 编程中,面向对象编程(OOP)是一个核心概念。上一章,我们深入探讨了类的“初始化”与“析构”,今天我们将关注于类的属性方法。理解这些概念对于有效使用面向对象编程至关重要,因为它们是组织和封装数据与行为的基础。

属性

在 Swift 中,属性是属于类或结构体的变量或常量。属性用于存储对象的状态,能够以不同的形式存在,包括存储属性计算属性

存储属性

存储属性是指持久存储在实例中的属性。它可以是常量(let)或变量(var)。下面是一个简单的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Dog {
var name: String
var breed: String
let age: Int

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

let myDog = Dog(name: "Buddy", breed: "Golden Retriever", age: 5)
print("Dog's name is \(myDog.name), breed is \(myDog.breed), and age is \(myDog.age).")

在这个示例中,namebreed是变量属性,age是常量属性。当我们创建一个Dog实例时,其属性会被初始化并可以直接访问。

计算属性

计算属性并不直接存储值,而是通过其它属性提供获取(get)或设置(set)的能力。计算属性的典型使用场景是,当你需要根据其他属性的值计算一个新值时。以下是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Rectangle {
var width: Double
var height: Double

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

var area: Double {
return width * height
}
}

let myRectangle = Rectangle(width: 10, height: 5)
print("The area of the rectangle is \(myRectangle.area).")

这里,area是一个计算属性,它通过widthheight计算出长方形的面积。

方法

在 Swift 中,方法是属于类或结构体的函数。这些方法通常用于对类实例的操作,或者对其属性进行处理。

实例方法

实例方法是作用于特定实例的方法,常用于改变实例的状态或执行某种操作。下面是一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Counter {
var count: Int = 0

func increment() {
count += 1
}

func reset() {
count = 0
}
}

let counter = Counter()
counter.increment()
print("Counter value is \(counter.count).")
counter.reset()
print("Counter value after reset is \(counter.count).")

在这个例子中,increment方法增加count的值,而reset方法将其重置为零。

类方法

类方法则是定义在类上的方法,它们可以在没有实例化对象的情况下调用。使用static关键字定义。例如:

1
2
3
4
5
6
7
8
class Math {
static func square(_ number: Int) -> Int {
return number * number
}
}

let squareOfFour = Math.square(4)
print("The square of 4 is \(squareOfFour).")

这里,square方法是一个类方法,能够通过类名直接调用,而无需实例化对象。

总结

在本章中,我们探讨了 Swift 中的属性方法,并学习了如何定义存储属性、计算属性以及实例方法、类方法。理解这些概念是深入学习面向对象编程的重要基础,它们帮助我们更好地构造和管理我们的代码。

随着我们对面向对象编程的理解越来越深入,下一章将转向闭包(closure),深入研究闭包的定义与使用,继续构建我们的 Swift 编程知识体系。在那里,我们将探讨闭包的语法和功能,以及它们如何在实际编程中带来便利。

21 面向对象编程之属性与方法

https://zglg.work/swift-lang-zero/21/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论