Swift - 类



Swift 中的类是灵活结构的构建块。类似于常量、变量和函数,用户可以定义类属性和方法。Swift 为我们提供了这样的功能:在声明类时,用户无需创建接口或实现文件。Swift 允许我们将类创建为单个文件,并且一旦类初始化,外部接口将默认创建。

拥有类的优势

  • 继承将一个类的属性获取到另一个类。

  • 类型转换使用户能够在运行时检查类类型。

  • 析构函数负责释放内存资源。

  • 引用计数允许类实例拥有多个引用。

类和结构体的共同特征

  • 属性用于存储值

  • 下标定义为提供对值的访问

  • 方法初始化以改进功能

  • 初始状态由初始化器定义

  • 功能扩展到默认值之外

  • 确认协议功能标准

Swift 中类的定义

在 Swift 中,使用 class 关键字以及类名和花括号({}) 来定义。类名始终以大写字母开头,例如 Employee,而不是 employee,花括号包含类的初始化器、属性和方法。

  • 属性 - 与类关联的常量和变量称为结构体的属性。它们通常用于定义类的特征。一个类可以有多个属性。

  • 方法 - 与类关联的函数称为类的方法。它们通常用于定义与类关联的行为。它们可以具有参数和返回值。单个类可以有多个方法。

  • 初始化器 - 它是与类关联的一种特殊方法。初始化器用于设置类实例的初始状态。它使用 init 关键字定义。在创建类实例时调用它。它可以具有参数和默认值。

语法

以下是类的语法:

class nameClass { 
   // Properties
   Property 1 : Type
   Property 2 : Type

   // Initializer
   init(){
      // statement
   }

   // Methods
   func functionName(){
      // Statement
   } 
}

示例

在下面的 Swift 示例中,我们创建了一个名为 markStruct 的类,它具有三个属性,例如 String 类型的 studname,以及 Int 类型的 mark 和 mark2。

class student{
   var studname: String
   var mark: Int 
   var mark2: Int 
}

Swift 类对象

对象称为类的实例。它是根据类定义的蓝图创建的。单个类可以有多个对象,并且它们彼此独立,这意味着如果我们修改一个实例,则不会影响其他实例。我们可以通过调用类初始化器来创建类的对象。使用此初始化器,我们可以通过将初始值与属性名称一起传递来初始化每个属性。

语法

以下是类实例的语法:

var objectName = ClassName(propertyName1: Value, propertyName2: value)

示例

在下面的 Swift 示例中,我们将创建 Marks 的实例。

class Marks {
   var mark1: Int
   var mark2: Int
   var mark3: Int
}
// Creating a class object using an initializer
var myObj = Marks(mark1: 10, mark2: 20, mark3: 30)

在 Swift 中访问类的属性

要访问类的属性,我们可以使用类对象后跟一个点(.)和属性的名称。我们还可以借助点(.)语法修改属性的值。

语法

以下是访问类属性的语法:

classObjectName.PropertyName

以下是修改类属性的语法:

classObjectName.PropertyName = value

示例

Swift 程序用于访问和修改类的属性。

// Defining a class 
struct Employee {
   var name: String
   var department: String
   var salary: Int
    
   // Initializer
   init(name: String, department: String, salary: Int){
      self.name = name
      self.department = department
      self.salary = salary
   }
}

// Creating an instance of the Employee class
var emp = Employee(name: "Suman", department: "Designing", salary: 33000)

// Accessing the values of the properties using dot notation
print("Employee Details:")
print("Name: \(emp.name)")
print("Department: \(emp.department)")
print("Salary: \(emp.salary)")

// Modifying the values of the properties using dot notation
emp.salary = 40000

// Displaying the updated values
print("\nUpdated Value:")
print("Salary: \(emp.salary)")

输出

它将产生以下输出:

Employee Details:
Name: Suman
Department: Designing
Salary: 33000

Updated Value:
Salary: 40000

在 Swift 中访问类的方法

要访问类的方法,我们可以使用点表示法。这里,类实例后跟一个点(.)和方法名称来访问方法。

语法

以下是访问类方法的语法:

classInstanceName.methodName

示例

Swift 程序用于访问类的方法。

// Defining a class 
class Parallelogram {

   // Properties of class
   var base: Double
   var height: Double
    
   // Initializer
   init(base: Double, height: Double){
      self.base = base
      self.height = height
   }
    
   // Method to calculate the area of the Parallelogram
   func calculateParallelogramArea() -> Double {
      return base * height
   }
}

// Create an instance of the Parallelogram class
var myObj = Parallelogram(base: 10.0, height: 9.0)

// Calling the calculateParallelogramArea() method
let area = myObj.calculateParallelogramArea()
print("Area of the Parallelogram: \(area)")

输出

它将产生以下输出:

Area of the Parallelogram: 90.0

类作为 Swift 中的引用类型

在 Swift 中,类是引用类型,这意味着当我们将类分配给结构体或常量或将其作为参数传递给函数时,将使用现有对象的引用。因此,当我们对一个实例进行更改时,将反映在该实例的所有引用中。

示例

Swift 程序演示类作为引用类型。

// Defining a class
class Student {

   // Properties
   var name: String
   var age: Int
    
   // Initializer    
   init(name: String, age: Int){
      self.name = name
      self.age = age
   }
}

// Creating an instance of the Student class 
var stud = Student(name: "Kunal", age: 22)

// Assigning stud to details
// Here details have the reference of stud object
var details = stud

// Modifying the values of the properties
// Here the modification will affect the stud instance 
// because it passed as a reference-type 
details.name = "Mohina"
details.age = 40

print("student 1: name-\(stud.name) and age-\(stud.age)")
print("student 2: name-\(details.name) and age-\(details.age)")

输出

它将产生以下输出:

student 1: name-Mohina and age-40
student 2: name-Mohina and age-40
广告