Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Herencia en C#: Construyendo código reutilizable y mantenible

Uno de los conceptos más importantes en programación orientada a objetos es la herencia. Permite definir una clase en términos de otra, facilitando la creación y mantenimiento de aplicaciones. También permite reutilizar funcionalidad de código y acelera el tiempo de implementación.

Al crear una clase, en lugar de escribir miembros completamente nuevos, el programador puede designar que la nueva clase herede los miembros de una clase existente. Esta clase existente se llama clase base, y la nueva clase es la clase derivada.

La herencia implementa la relación ES-UN (IS-A). Por ejemplo, mamífero ES UN animal, perro ES UN mamífero, por tanto perro ES UN animal.

Clases base y derivadas

Una clase puede derivarse de más de una clase o interfaz, heredando datos y funciones de múltiples clases base o interfaces.

Sintaxis en C# para crear clases derivadas:

<especificador_acceso> class <clase_base> { ... }
class <clase_derivada> : <clase_base> { ... }

Ejemplo: Clase base Shape y derivada Rectangle

using System;
namespace AplicaciónHerencia {
    class Forma {
        public void SetAncho(int w) { ancho = w; }
        public void SetAlto(int h) { alto = h; }
        protected int ancho;
        protected int alto;
    }
    
    // Clase derivada
    class Rectángulo : Forma {
        public int GetÁrea() { return (ancho * alto); }
    }
    
    class ProbadorRectángulo {
        static void Main(string[] args) {
            Rectángulo Rect = new Rectángulo();
            Rect.SetAncho(5);
            Rect.SetAlto(7);
            Console.WriteLine("Área total: {0}", Rect.GetÁrea());
            Console.ReadKey();
        }
    }
}

Resultado:

Área total: 35

Inicialización de la clase base

La clase derivada hereda variables y métodos de la base. El objeto de la superclase debe crearse antes que el de la subclase. Puede dar instrucciones para la inicialización de la superclase en la lista de inicialización de miembros.

Ejemplo:

using System;
namespace AplicaciónRectángulo {
    class Rectángulo {
        protected double longitud;
        protected double ancho;
        
        public Rectángulo(double l, double w) {
            longitud = l; ancho = w;
        }
        
        public double GetÁrea() { return longitud * ancho; }
        public void Mostrar() {
            Console.WriteLine("Longitud: {0}", longitud);
            Console.WriteLine("Ancho: {0}", ancho);
            Console.WriteLine("Área: {0}", GetÁrea());
        }
    }
    
    class Tablero : Rectángulo {
        private double costo;
        
        public Tablero(double l, double w) : base(l, w) { }
        
        public double GetCosto() {
            double costo = GetÁrea() * 70;
            return costo;
        }
        
        public void Mostrar() {
            base.Mostrar();
            Console.WriteLine("Costo: {0}", GetCosto());
        }
    }
    
    class EjecutarRectángulo {
        static void Main(string[] args) {
            Tablero t = new Tablero(4.5, 7.5);
            t.Mostrar();
            Console.ReadLine();
        }
    }
}

Resultado:

Longitud: 4.5
Ancho: 7.5
Área: 33.75
Costo: 2362.5

Herencia múltiple en C#

C# no soporta herencia múltiple de clases. Sin embargo, puede usar interfaces para implementar herencia múltiple.

Ejemplo con interfaces:

using System;
namespace AplicaciónHerencia {
    class Forma {
        public void SetAncho(int w) { ancho = w; }
        public void SetAlto(int h) { alto = h; }
        protected int ancho;
        protected int alto;
    }
    
    // Interfaz base
    public interface CostoPintura {
        int GetCosto(int área);
    }
    
    // Clase derivada
    class Rectángulo : Forma, CostoPintura {
        public int GetÁrea() { return (ancho * alto); }
        public int GetCosto(int área) { return área * 70; }
    }
    
    class ProbadorRectángulo {
        static void Main(string[] args) {
            Rectángulo Rect = new Rectángulo();
            int área;
            Rect.SetAncho(5);
            Rect.SetAlto(7);
            área = Rect.GetÁrea();
            Console.WriteLine("Área total: {0}", Rect.GetÁrea());
            Console.WriteLine("Costo total de pintura: ${0}", Rect.GetCosto(área));
            Console.ReadKey();
        }
    }
}

Resultado:

Área total: 35
Costo total de pintura: $2450

Lenguaje C

  1. Clases y objetos en C#: Fundamentos para POO robusta
  2. Palabra clave static en C#: Dominando variables, métodos y clases estáticas
  3. Entendiendo clases anidadas en C#: Definición, uso y herencia
  4. Dominando las plantillas de clase en C++: guía práctica
  5. Estructura de Programa C#: Componentes Principales y Ejemplo Hello World
  6. Fundamentos de C#: Sintaxis Básica y Conceptos de POO
  7. Dominando la Herencia en Python: Conceptos, Sintaxis y Ejemplos Prácticos
  8. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  9. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación