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:
引用不相同的类实例 SampleClassOtras extensiones