Swift 中的面向对象详解

面向对象编程(OOP)是一种广泛使用的编程范式,可以将程序分割为不同的对象,每个对象都是一个能够接收消息、处理数据并发送消息的容器。Swift作为一门现代化编程语言,同时支持面向对象编程和面向协议编程,可以帮助我们构建清晰、灵活的应用程序。

类(Class)

在Swift中,我们使用class关键字来定义一个类:

class Person {
  var name: String
  init(name: String) {
    self.name = name
  }
  func sayHello() {
    print("Hello, I'm \(name)")
  }
}

let john = Person(name: "John")
john.sayHello() // 输出 "Hello, I'm John"

类中可以包含属性(变量)和方法(函数),还可以定义初始化方法init来创建类的实例。

结构体(Struct)

结构体与类非常相似,也可以包含属性和方法,但是结构体是值类型(传值),类是引用类型(传引用)。

struct Point {
  var x: Int
  var y: Int
}

var point = Point(x: 1, y: 2) 
var copy = point // 复制点的副本
copy.x = 3  // 不影响point

继承(Inheritance)

类可以通过继承的方式扩展功能,子类可以继承父类的属性和方法。

www.itzhimei.com代码
class Vehicle {
  var currentSpeed = 0.0
  func drive() {
    print("Driving at \(currentSpeed)")
  }
}

class Bicycle: Vehicle {
  var hasBasket = false
}

let bicycle = Bicycle()
bicycle.drive() // 子类继承了drive方法

属性封装

可以用private关键字将属性标记为私有,防止外部直接访问:

class Person {
  private var id: Int

  init(id: Int) {
    self.id = id
  }

  func identify() -> Int {
    return id
  }
}

let person = Person(id: 12345)
person.identify() // 通过方法访问私有属性

构造过程

类的初始化可以通过定义 designated 和 convenience 两种构造方法来实现,前者是主构造,后者是次构造,方便创建实例。

Swift面向对象编程在保持语法简单的同时,提供了诸如属性封装、构造过程等多种特性,可以让我们以更合理灵活的方式来设计程序架构。