La herència és un dels pilars fonamentals de la programació orientada a objectes (OOP). Permet crear una nova classe (classe derivada) que hereta els membres (propietats, mètodes, etc.) d'una classe existent (classe base). Això facilita la reutilització del codi i la creació de jerarquies de classes.
Conceptes Clau
- Classe Base (Superclasse): La classe de la qual s'hereten els membres.
- Classe Derivada (Subclasse): La classe que hereta els membres de la classe base.
- Membres Heretats: Propietats, mètodes i altres membres que es transmeten de la classe base a la classe derivada.
- Modificadors d'Accés: Controlen la visibilitat dels membres heretats (public, protected, private).
Sintaxi Bàsica
// Definició de la classe base
public class Animal
{
public string Nom { get; set; }
public void Menjar()
{
Console.WriteLine("L'animal està menjant.");
}
}
// Definició de la classe derivada
public class Gos : Animal
{
public void Bordar()
{
Console.WriteLine("El gos està bordant.");
}
}Explicació del Codi
-
Classe Base
Animal:- Té una propietat
Nom. - Té un mètode
Menjar().
- Té una propietat
-
Classe Derivada
Gos:- Hereta la propietat
Nomi el mètodeMenjar()de la classeAnimal. - Defineix un mètode addicional
Bordar().
- Hereta la propietat
Exemple Pràctic
public class Program
{
public static void Main(string[] args)
{
Gos meuGos = new Gos();
meuGos.Nom = "Rex";
meuGos.Menjar();
meuGos.Bordar();
}
}Sortida Esperada
Exercicis Pràctics
Exercici 1: Crear una Jerarquia de Classes
-
Descripció: Crea una classe base
Vehicleamb propietatsMarcaiModel, i un mètodeConduir(). Després, crea una classe derivadaCotxeque afegeixi una propietatNombreDePortesi un mètodeTocarClaxon(). -
Solució:
public class Vehicle
{
public string Marca { get; set; }
public string Model { get; set; }
public void Conduir()
{
Console.WriteLine("El vehicle està conduint.");
}
}
public class Cotxe : Vehicle
{
public int NombreDePortes { get; set; }
public void TocarClaxon()
{
Console.WriteLine("El cotxe està tocant el claxon.");
}
}
public class Program
{
public static void Main(string[] args)
{
Cotxe meuCotxe = new Cotxe();
meuCotxe.Marca = "Toyota";
meuCotxe.Model = "Corolla";
meuCotxe.NombreDePortes = 4;
meuCotxe.Conduir();
meuCotxe.TocarClaxon();
}
}Exercici 2: Herència i Polimorfisme
-
Descripció: Crea una classe base
Empleatamb una propietatNomi un mètodeTreballar(). Després, crea dues classes derivadesEnginyeriDissenyadorque sobreescriguin el mètodeTreballar()per mostrar missatges específics. -
Solució:
public class Empleat
{
public string Nom { get; set; }
public virtual void Treballar()
{
Console.WriteLine("L'empleat està treballant.");
}
}
public class Enginyer : Empleat
{
public override void Treballar()
{
Console.WriteLine("L'enginyer està dissenyant un sistema.");
}
}
public class Dissenyador : Empleat
{
public override void Treballar()
{
Console.WriteLine("El dissenyador està creant un disseny.");
}
}
public class Program
{
public static void Main(string[] args)
{
Empleat[] empleats = new Empleat[2];
empleats[0] = new Enginyer { Nom = "Anna" };
empleats[1] = new Dissenyador { Nom = "Joan" };
foreach (Empleat empleat in empleats)
{
Console.WriteLine($"{empleat.Nom} està treballant:");
empleat.Treballar();
}
}
}Sortida Esperada
Anna està treballant: L'enginyer està dissenyant un sistema. Joan està treballant: El dissenyador està creant un disseny.
Errors Comuns i Consells
-
Oblidar el Modificador
virtualooverride:- Quan es vol sobreescriure un mètode de la classe base, assegura't que el mètode de la classe base estigui marcat com
virtuali el mètode de la classe derivada comoverride.
- Quan es vol sobreescriure un mètode de la classe base, assegura't que el mètode de la classe base estigui marcat com
-
No Inicialitzar Propietats Heretades:
- Recorda que les propietats heretades de la classe base també han de ser inicialitzades si és necessari.
-
Confusió amb els Modificadors d'Accés:
- Utilitza
protectedsi vols que els membres siguin accessibles només dins de la classe base i les seves derivades.
- Utilitza
Resum
En aquesta secció, hem après sobre la herència en C#, com crear classes base i derivades, i com utilitzar els membres heretats. També hem vist exemples pràctics i exercicis per reforçar els conceptes. La herència és una eina poderosa per a la reutilització del codi i la creació de jerarquies de classes, facilitant així el desenvolupament de programari modular i mantenible.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització
