¿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.
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
comochildB
heredan de la claseA
. Ambos llaman al constructor de la claseA
utilizandobase(input)
en sus propios constructores. Esto les permite inicializar las variables en la claseA
, 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.