Constructores en clases derivadas. Al instanciar objetos de
clases derivadas se inicia una cadena de invocaciones a constructores en las
cuales el constructor de la clase derivada, antes de realizar sus propias
tareas, invoca (ya sea implícita o explícitamente) al constructor de su clase
base. Similarmente, si la clase base fue derivada de otra clase, el constructor
de la clase base debe invocar al constructor de la clase ubicada en el
siguiente nivel superior de la jerarquía, y así sucesivamente. El último
constructor invocado en la cadena es el constructor de la clase Object, cuyo
cuerpo se ejecuta primero. El cuerpo del constructor de la clase derivada se
ejecuta al final. El constructor de cada clase base inicializa las variables de
instancia que el objeto de la clase derivada hereda.
Destructores en clases derivadas. Cuando remueve de la memoria
un objeto de una clase derivada, el recolector de basura invoca al destructor
del objeto. Esto inicia una cadena de invocaciones a destructores, en donde el
destructor de la clase derivada y los destructores de las clases bases directas
e indirectas se ejecutan en orden inverso al que se ejecutaron los
constructores, esto es, primero se ejecuta el destructor de la clase derivada y
al final se ejecuta el destructor de la clase base ubicada en el nivel superior
de la jerarquía. La ejecución de los destructores debe liberar todos los
recursos que el objeto adquirió, antes de que el recolector de basura reclame
la memoria de ese objeto.
Cuando el recolector de basura invoca al destructor de un objeto
de una clase derivada, ese destructor realiza su tarea y después invoca al
destructor de la clase base. El proceso se repite hasta que se invoca al
destructor de la clase Object
Ejemplo:
// Destruct Derivadas?.cs : Destructores en clases derivadas. using
// Destruct Derivadas?.cs : Destructores en clases derivadas. using
C = System.Console;
class Animal {
Animal( ) {
C.Write Line?(“Muere
mi parte Animal …”);
} }
class Mamífero : Animal {
Mamífero( ){
C.Write Line(“Muere mi parte Mamífero …”);
} }
class Perro : Mamífero {
Perro( ) {
C.Write Line(“Muere mi parte Perro …”);
} }
public class Principal {
static void Main( ) {
Perro Fido = new Perro ( );
} }
No hay comentarios:
Publicar un comentario