Definición - ¿Qué significa Clase Base - .NET?
Una clase base, en el contexto de C #, es una clase que se usa para crear o derivar otras clases. Las clases derivadas de una clase base se denominan clases secundarias, subclases o clases derivadas. Una clase base no hereda de ninguna otra clase y se considera padre de una clase derivada.
La clase base constituye el medio por el cual se logra la herencia a través de la derivación. Una clase derivada de una clase base hereda tanto los datos como el comportamiento. Por ejemplo, vehículo puede ser una clase base de la que se pueden derivar las clases derivadas coche y autobús. Tanto el automóvil como el autobús son vehículos, y cada uno representa su propia especialización de clase básica.
Como en Java, pero a diferencia de C ++, C # no admite múltiples herencias de clases. C # se diferencia de Java al marcar explícitamente un modificador virtual para todos los miembros virtuales.
Una clase base también se conoce como clase principal o superclase.
Techinfo explica la Clase Base - .NET
La clase base ayuda a crear una clase especializada que puede reutilizar el código que se obtiene implícitamente de la clase base (excepto constructores y destructores) y extiende la funcionalidad de la clase base agregando o reemplazando miembros relevantes para la clase derivada en la clase derivada. En C #, los eventos se declaran en la clase base que se pueden generar a partir de clases derivadas. Las clases genéricas que se utilizan para encapsular operaciones que no son específicas de un tipo de datos en particular sirven como clases base, proporcionando un comportamiento genérico para lograr flexibilidad y reutilización del código.
La clave de las propiedades de la clase base en C #:
- Se accede a los miembros de la clase base (constructor, un método de instancia o un descriptor de acceso de propiedad de instancia) en la clase derivada utilizando la palabra clave "base".
- Las clases base se instancian automáticamente antes que las clases derivadas.
- La clase derivada puede comunicarse con la clase base durante la instanciación llamando al constructor de la clase base con una lista de parámetros coincidentes.
- Se puede acceder a los miembros de la clase base desde la clase derivada a través de una conversión explícita.
- Dado que una clase base en sí misma puede ser una clase derivada, una clase puede tener muchas clases base.
- Los miembros de una clase derivada pueden acceder a los miembros internos públicos, protegidos, internos y protegidos de una clase base.
- Debido a la naturaleza transitiva de la herencia, aunque una clase derivada tiene solo una clase base, hereda los miembros declarados en el padre de la clase base.
- Al declarar un método en la clase base como virtual, la clase derivada puede anular ese método con su propia implementación. Tanto el método y la propiedad reemplazados como los reemplazantes deben tener los mismos modificadores de nivel de acceso, como virtual, abstracto o override.
- Cuando se utiliza la palabra clave "abstracto" para un método, debe anularse en cualquier clase no abstracta que herede directamente de esa clase.
- Las clases base abstractas se crean usando la palabra clave "abstract" en su declaración y se usan para prevenir la iniciación directa usando la palabra clave "new". Solo se pueden usar a través de clases derivadas que implementan métodos abstractos.
- Una clase base puede evitar que otras clases hereden de ella declarando a todos los miembros como "sellados".
- Los miembros de la clase base se pueden ocultar en una clase derivada utilizando la palabra clave "nuevo" para indicar que el miembro no está destinado a ser una invalidación del miembro base. Si no se utiliza "nuevo", el compilador genera una advertencia.
Aunque la clase base y la interfaz se pueden usar indistintamente, las clases son más flexibles que las interfaces desde una perspectiva de control de versiones. Se prefiere la clase base en la mayoría de los casos, excepto en los siguientes escenarios donde:
- Varias clases no relacionadas forman la base de la clase derivada
- Las clases ya tienen clases base establecidas
- La agregación no es adecuada ni práctica
Esta definición se escribió en el contexto de C #