es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible incluir un constructor en una clase abstracta de C# y llamar a base para acceder a ellos en el diseño?

Estaba practicando clases abstractas y herencia en c#, pero me preguntaba si las clases derivadas podían acceder al constructor llamando a la base.

public abstract class A
{
    protected bool A;
    protected int B;
    public A(int input)
    {
      A = true;
      B = false;
    }
    public abstract int function_B();
  }
}
public class childA : A
{
    public childA (int input):base(input)
    { 
    }
    public override int function_B()
    {
      //hacer algo
    }
}
public class childB : A
{
    public childB(int input):base(input)
    {
    }
    public override int function_B()
    {
      //hacer algo diferente
    }
    public void functionC(int input)
    {
    }   
}

Estaba confundido si debería usar este diseño de clase abstracta o simplemente usar la herencia -> declarar una función virtual en la clase A.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c#, me gustaría aclarar que las clases derivadas pueden acceder al constructor de la clase base llamando al constructor de la base usando la palabra clave base seguida de los argumentos requeridos para el constructor.

    En el ejemplo de código proporcionado, tanto childA como childB heredan de la clase A. Ambos llaman al constructor de la clase A utilizando base(input) en sus propios constructores. Esto les permite inicializar las variables en la clase A, así como en sus propias clases respectivas.

    El diseño de una clase abstracta tiene sus ventajas, ya que permite la creación de métodos y variables compartidos por todas las clases derivadas. También asegura que las clases derivadas implementen ciertos métodos, lo que puede evitar errores y mejorar la consistencia del código. Sin embargo, si los requisitos son simples, el uso de la herencia con funciones virtuales también puede ser una opción viable.

    En última instancia, la elección entre el uso de una clase abstracta o la herencia con funciones virtuales debe depender de los requisitos específicos del proyecto en cuestión.

Comments are closed.