Swift Clases

Las clases Swift son una construcción genérica y flexible utilizada para construir código.

Podemos definir propiedades (constantes, variables) y métodos para una clase.

A diferencia de otros lenguajes de programación, Swift no requiere que crees archivos de interfaz e implementación separados para tus clases personalizadas. Todo lo que necesitas hacer es definir una clase en un solo archivo, y el sistema generará automáticamente la interfaz externa para el resto del código.

Comparación entre clases y estructuras

En Swift, las clases y lasestructurastienen mucho en común. Lo común es:

  • Definir propiedades para almacenar valores
  • Definir métodos para proporcionar funcionalidad
  • Definir subíndices para acceder a valores
  • Definir inicializadores para generar valores inicializados
  • Extender para agregar funcionalidad a la implementación predeterminada
  • Adoptar protocolos para proporcionar funcionalidad estándar a una clase

En comparación con las estructuras, las clases tienen las siguientes funcionalidades adicionales:

  • La herencia permite que una clase herede las características de otra clase
  • La conversión de tipos permite verificar e interpretar el tipo de una instancia de clase en tiempo de ejecución
  • Los deinicializadores permiten que una instancia de clase libere cualquier recurso que se le haya asignado
  • El recuento de referencias permite múltiples referencias a una clase

Sintaxis:

class classname {
   Definition 1
   Definition 2
   ……
   Definition N
}

Definición de clase

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

Instanciar la clase:

let studrecord = student()

Ejemplo

import Cocoa

class MarksStruct {
    var mark: Int
    init(mark: Int) {
        self.mark = mark
    }
}

class studentMarks {
    var mark = 300
}
let marks = studentMarks()
print("成绩为 \(marks.mark)")

El resultado de ejecutar el programa anterior es:

成绩为 300

Acceso a las propiedades de la clase como tipo de referencia

Las propiedades de la clase pueden ser.accedidas a través de. El formato es:NombreDeInstanciaClase.NombreDePropiedad:

import Cocoa

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark1 = 300
   var mark2 = 400
   var mark3 = 900
}
let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

El resultado de ejecutar el programa anterior es:

Mark1 is 300
Mark2 is 400
Mark3 is 900

Operadores de identidad

Como las clases son tipos de referencia, es posible que varias constantes y variables hagan referencia a la misma instancia de clase al mismo tiempo en segundo plano.

Para poder determinar si dos constantes o variables hacen referencia a la misma instancia de clase, Swift incorpora dos operadores de identidad:

Operador de identidad Operador de no identidad
El operador es: === El operador es: !==
Devuelve true si dos constantes o variables hacen referencia a la misma instancia de clase Devuelve true si dos constantes o variables hacen referencia a una instancia de clase distinta

Ejemplo

import Cocoa

class SampleClass: Equatable {
    let myProperty: String
    init(s: String) {
        myProperty = s
    }
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
    return lhs.myProperty == rhs.myProperty
}

let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")

if spClass1 === spClass2 {// false
    print("引用相同的类实例 \(spClass1)")
}

if spClass1 !== spClass2 {// true
    print("引用不相同的类实例 \(spClass2)")
}

El resultado de ejecutar el programa anterior es:

引用不相同的类实例 SampleClass
Otras extensiones