Swift - Clases
Las clases en Swift 4 son bloques de construcción de construcciones flexibles. De manera similar a las constantes, variables y funciones, el usuario puede definir propiedades y métodos de clase. Swift 4 nos proporciona la funcionalidad de que, al declarar clases, los usuarios no necesitan crear interfaces o archivos de implementación. Swift 4 nos permite crear clases como un solo archivo y las interfaces externas se crearán por defecto una vez que se inicialicen las clases.
Beneficios de tener clases
La herencia adquiere las propiedades de una clase a otra clase
La conversión de tipos permite al usuario verificar el tipo de clase en tiempo de ejecución
Los desinicializadores se encargan de liberar recursos de memoria
El recuento de referencias permite que la instancia de clase tenga más de una referencia
Características comunes de clases y estructuras
- Las propiedades se definen para almacenar valores
- Los subíndices se definen para proporcionar acceso a los valores.
- Los métodos se inicializan para mejorar la funcionalidad
- Los inicializadores definen el estado inicial
- La funcionalidad se expande más allá de los valores predeterminados
- Confirmación de los estándares de funcionalidad del protocolo
Sintaxis
Class classname {
Definition 1
Definition 2
---
Definition N
}
Definición de clase
class student {
var studname: String
var mark: Int
var mark2: Int
}
La sintaxis para crear instancias
let studrecord = student()
Ejemplo
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
print("Mark is \(marks.mark)")
Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:
Mark is 300
Acceder a las propiedades de clase como tipos de referencia
Se puede acceder a las propiedades de la clase mediante el '.' sintaxis. El nombre de la propiedad está separado por un '.' después del nombre de la instancia.
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)")
Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:
Mark1 is 300
Mark2 is 400
Mark3 is 900
Operadores de identidad de clase
Las clases en Swift 4 se refieren a múltiples constantes y variables que apuntan a una sola instancia. Para conocer las constantes y variables que apuntan a una instancia de clase particular, se utilizan operadores de identidad. Las instancias de clase siempre se pasan por referencia. En las clases, las instancias NSString, NSArray y NSDictionary siempre se asignan y se transmiten como una referencia a una instancia existente, en lugar de como una copia.
Idéntico a los operadores | No idéntico a los operadores |
---|---|
El operador utilizado es (===) | El operador utilizado es (! ==) |
Devuelve verdadero cuando dos constantes o variables apuntan a una misma instancia | Devuelve verdadero cuando dos constantes o variables apuntan a una instancia diferente |
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")
spClass1 === spClass2 // false
print("\(spClass1)")
spClass1 !== spClass2 // true
print("\(spClass2)")
Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:
main.SampleClass
main.SampleClass