Ya conoces la Abstracción y el Encapsulamiento (get / set). Ahora nos enfocaremos en Herencia y Polimorfismo. Estos pilares te permitirán escribir enormes simulaciones, videojuegos o aplicaciones reduciendo el código repetido casi a cero.
Herencia (`:`)
La herencia significa crear una "clase hija" que obtiene todas las propiedades y métodos de una "clase padre", logrando así reutilizar el comportamiento base sin tener que escribirlo de nuevo.
Herencia en Acción
CSHARP
1// Clase Padre General (Base)
2class Animal
3{
4publicstring Nombre { get; set; }
5
6publicvoidRespirar()
7 {
8Console.WriteLine("Respirando...");
9 }
10}
11
12// Gato *es un* Animal (Clase hija o Derivada)
13class Gato : Animal
14{
15publicvoidMaullar()
16 {
17Console.WriteLine("¡Miau!");
18 }
19}
20
21class Program
22{
23staticvoidMain()
24 {
25 Gato miGatito = newGato();
26
27 miGatito.Nombre = "Michi"; // Propiedad heredada de Animal
28 miGatito.Respirar(); // Método heredado de Animal
29
30 miGatito.Maullar(); // Su propio método
31 }
32}
Polimorfismo (`virtual` y `override`)
Ocurre cuando heredaste de la clase base un método, pero te das cuenta que es deficiente, así que la hija decide sobrescribirlo (rediseñarlo por su cuenta), logrando tener "múltiples formas" de ejecución bajo el mismo nombre.
Polimorfismo (Sobrescritura)
CSHARP
1// Clase Base
2class Enemigo
3{
4// 'virtual' significa: "Las hijas pueden modificar este botón"
5publicvirtualvoidAtacar()
6 {
7Console.WriteLine("El enemigo da un golpe simple: -10 HP");
8 }
9}
10
11class JefeFinal : Enemigo
12{
13// 'override' significa: "Lo siento papá, yo lo haré a mi manera"
14publicoverridevoidAtacar()
15 {
16Console.WriteLine("El JEFE LANZA FUEGO: -100 HP y quema todo");
17 }
18}
Interfaces (`I`)
Las Interfaces en C# son como contratos. Las llamas empezando con I obligan a una clase a decir: "Yo prometo firmar el contrato e implementar estos métodos". Es clave en arquitecturas de dependencias, y aunque no permite variables, dictará el comportamiento exacto que deba ser seguido.
Sintaxis de Interfaces
CSHARP
1// Es como un contrato que dice "quien use esto DEBE poder VOLAR"
2interface IVolador
3{
4voidVolar();
5}
6
7// Un avión implementa el contrato
8class Avion : IVolador
9{
10publicvoidVolar()
11 {
12Console.WriteLine("Motores encendidos. Volando por el cielo.");
13 }
14}
15
16// Un pato también
17class Pato : IVolador
18{
19publicvoidVolar()
20 {
21Console.WriteLine("El pato mueve las alas.");
22 }
23}
¡Felicidades, has dominado los fundamentos de C#! 🎉
Desde escribir tu primer programa secuencial, evaluar lógicas con ciclos, agrupar datos, hasta aplicar buenas prácticas de ingeniería de software mediante Clases e Interfaces. Estás completamente capacitado para saltar a un Framework moderno (`ASP.NET Core`, `Unity`, `React con C# backend`) o afrontar nuestra sección del "Modo Desafío".
👨💻 Ejercicio Práctico
Misión: Herencia Heroica
Crea una clase base Personaje con un método virtual Atacar(). Luego, crea una clase hija Guerrero : Personaje que le haga override al ataque para hacerlo más fuerte.
👁️ Ver solución propuesta
Código
CSHARP
1class Personaje
2{
3publicvirtualvoidAtacar()
4 {
5Console.WriteLine("Daño básico de 10 puntos.");
6 }
7}
8
9class Guerrero : Personaje
10{
11publicoverridevoidAtacar()
12 {
13Console.WriteLine("¡Golpe Aplastante! Daño de 50 puntos.");
14 }
15}
16
17class Program
18{
19staticvoidMain()
20 {
21 Guerrero g = newGuerrero();
22 g.Atacar(); // Imprime el golpe del Guerrero
23 }
24}
👨💻 Ejercicio Práctico 2
Misión: El polimorfismo musical
Crea clase base `Instrumento` con método virtual Tocar(). Herédala en Guitarra y hazle un override diciendo "¡Riff de Rock!".