Contenido del curso
Fundamentos de programación iOS
- 3

Variables, constantes y tipos de datos en Swift
18:55 min - 4

Condicionales en Swift con if y else
16:58 min - 5

Funciones en Swift con parámetros y return
10:37 min - 6

Variables opcionales en Swift
09:29 min - 7

Arrays en Swift: declara, accede e inserta
10:28 min - 8

Eliminar y buscar elementos en arrays Swift
05:41 min - 9

Sets en Swift: sin orden ni duplicados
07:14 min - 10

Operaciones entre sets en Swift
05:22 min - 11

Diccionarios en Swift para datos complejos
10:54 min - 12

Ciclo while en Swift desde cero
06:48 min - 13

Ciclo for en Swift para buscar datos
09:38 min - 14

Batalla Pokémon con while en Swift
10:45 min
POO en iOS
- 15

Qué es la programación orientada a objetos
06:56 min - 16

Creación de Structs en Swift para Gestión de Materias
11:16 min - 17

Herencia en Swift: class vs struct
Viendo ahora - 18

Uso de Enumerables (Enums) en Swift para Datos Limitados
09:27 min - 19

Protocolos en Swift como contratos de código
15:12 min - 20

map, filter y reduce con arreglos en Swift
10:53 min - 21

Prueba final del Students Manager en Swift
05:40 min
Manejo de errores y programación segura
Programación en el ecosistema de Apple
Herencia en Swift: class vs struct
Resumen
Trabajar con class en Swift te permite modelar entidades complejas y reutilizar comportamiento mediante herencia, algo que no consigues con un struct. Aquí aprenderás a declarar una clase Student, crear una subclase AdvancedStudent y sobrescribir funciones para personalizar su comportamiento.
Cómo declaro una clase en Swift
Una clase se define con la palabra reservada class y agrupa propiedades y funciones que describen una entidad. En el ejemplo se crea un archivo Student.swift dentro de la carpeta Sources y se declara la clase como public para poder usarla desde el playground.
La clase Student contiene cinco propiedades que describen al estudiante:
namede tipo String, para el nombre.agede tipo Int, porque la edad no admite decimales.emailde tipo String, como dato de contacto.subjects, una lista del tipoSubjectcreado en una clase anterior.scores, una lista de tipo Double con las notas asociadas.
¿Qué diferencia hay entre class y struct en Swift? Las clases permiten herencia y se pasan por referencia; los structs no heredan y se pasan por valor. Si necesitas reutilizar comportamiento entre tipos relacionados, usa class.
Cómo defino el inicializador public init
Después de las propiedades viene el public init, que recibe los mismos parámetros que las propiedades y los asigna con self. Xcode suele autocompletar esta firma, lo que ahorra tiempo cuando la clase tiene varios atributos [02:00].
Para mostrar los datos en consola se crea una función studentDescription que retorna un String. Dentro se declara una variable desc con la información básica, se recorren las materias con un ciclo for concatenando la descripción de cada Subject, y al final se agrega un salto de línea antes del return [03:30].
Cómo funciona la herencia en Swift
La herencia es un concepto de programación orientada a objetos que permite que una clase hija reutilice las propiedades y funciones de una clase padre. En Swift se indica con dos puntos después del nombre de la subclase.
Imagina que además de estudiantes normales necesitas modelar estudiantes avanzados, que tienen todo lo de un estudiante más unos puntos extra por proyectos previos. En lugar de duplicar código, creas una subclase que herede de Student.
Cómo creo la subclase AdvancedStudent
En un nuevo archivo AdvancedStudent.swift se declara la clase así: public class AdvancedStudent: Student. Esa sintaxis con dos puntos significa que AdvancedStudent hereda de Student y obtiene de inmediato sus propiedades y funciones [05:30].
La única propiedad nueva es extraPoints de tipo Double. El inicializador de la subclase sigue tres pasos clave:
- Recibe los mismos parámetros que el estudiante normal más
extraPoints. - Asigna primero las propiedades propias con
self.extraPoints = extraPoints. - Llama a
super.init(...)para que la clase padre inicialice el resto.
¿Qué hace super.init en Swift? Invoca el inicializador de la clase padre desde una subclase, asegurando que las propiedades heredadas queden correctamente asignadas antes de continuar.
Cómo sobrescribo una función con override
La palabra override indica que estás reemplazando una función heredada. Si intentas redefinir studentDescription sin ella, Xcode marca un error y te sugiere agregarla.
En el ejemplo, la subclase reescribe studentDescription para anteponer el título Estudiante avanzado y añadir los puntos extra al texto que ya retornaba la clase padre. Así, al imprimir en consola, el estudiante normal Tiago muestra su información estándar, mientras que la estudiante María aparece marcada como avanzada con sus 10 puntos extra visibles [12:00].
Cómo pruebo class y herencia en el playground
En el archivo SystemManager se crean dos instancias para validar el comportamiento:
s1es unStudentllamado Tiago, de 18 años, con la materia de Matemáticas y una nota de 70.s2es unAdvancedStudentllamado María, de 19 años, con nota de 80 y 10 puntos extra.
Al imprimir s1.studentDescription() y s2.studentDescription(), la consola muestra ambas versiones del texto: la genérica para el estudiante normal y la personalizada para el avanzado. Esa diferencia visible en consola confirma que la herencia y el override funcionan como esperabas.
Si Xcode lanza errores temporales por caché, basta con correr el playground otra vez para que se limpien y compile sin problema.
¿En qué otro escenario de la vida real usarías clases y herencia en Swift? Déjamelo en los comentarios.