在 Swift 中,类(Class)是一种引用类型,用于创建具有属性和方法的自定义数据类型。与结构体不同,类是引用类型,意味着它们在传递和赋值时传递的是引用而不是值。

以下是关于 Swift 类的基本信息和使用方法:

类的定义
// 简单的类定义
class Person {
    var name: String
    var age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

// 创建类的实例
var person = Person(name: "John", age: 25)

类的属性和方法
class Dog {
    var name: String
    var age: Int
    
    // 计算属性
    var humanYears: Int {
        return age * 7
    }
    
    // 方法
    func bark() {
        print("Woof!")
    }
    
    // 初始化器
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

var dog = Dog(name: "Buddy", age: 3)
print("Dog's human years: \(dog.humanYears)")
dog.bark()

类的继承

Swift 中的类支持继承,一个类可以继承另一个类的属性和方法:
class Student: Person {
    var studentID: String
    
    // 初始化器
    init(name: String, age: Int, studentID: String) {
        self.studentID = studentID
        super.init(name: name, age: age)
    }
}

var student = Student(name: "Alice", age: 20, studentID: "12345")

类的析构器

类可以有析构器,它会在实例释放之前被调用。使用 deinit 关键字定义析构器:
class MyClass {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    // 析构器
    deinit {
        print("Object \(name) is being deinitialized.")
    }
}

var object: MyClass? = MyClass(name: "Example")
object = nil  // 析构器被调用

类的引用类型特性

类是引用类型,这意味着它们在传递和赋值时传递的是引用,而不是值。当你将一个类的实例分配给另一个常量或变量时,它们都引用同一个实例:
var obj1 = MyClass(name: "Object1")
var obj2 = obj1  // obj2 引用 obj1
obj1.name = "UpdatedObject"

print("obj1.name: \(obj1.name)")  // 输出 "UpdatedObject"
print("obj2.name: \(obj2.name)")  // 输出 "UpdatedObject"

类的类型检查和转换

使用 is 运算符检查实例的类型,使用 as 运算符进行强制类型转换:
if obj1 is MyClass {
    print("obj1 is an instance of MyClass")
}

if let myClassInstance = obj1 as? MyClass {
    print("Successfully casted to MyClass")
}

以上是一些关于 Swift 类的基本用法。类是一种强大的工具,允许你创建复杂的数据模型和层次结构。


转载请注明出处:http://www.pingtaimeng.com/article/detail/14428/Swift