Catena di costruttori #1

Data la catena di derivazione di classi vuote

public class SuperSuperClasse
{
}
public class SuperClasse extends SuperSuperClasse
{
}
public class Classe extends SuperClasse
{
}

è possibile istanziare oggetti per ognuna di esse

public class CostruttoriTest
{
   public static void main(String args[])
   {
      SuperSuperClasse s_s_classe = new SuperSuperClasse();
      SuperClasse        s_classe = new SuperClasse();
      Classe               classe = new Classe();
   }
}

Apparentemente nessun codice viene eseguito, ma…



Data la catena di derivazione di classi, con i costruttori di default che scrivono un messaggio

public class SuperSuperClasse
{
   public SuperSuperClasse()
   {
      System.out.println("Super Super Classe");
   }
}
public class SuperClasse extends SuperSuperClasse
{
   public SuperClasse()
   {
      System.out.println("Super Classe");
   }
}
public class Classe extends SuperClasse
{
   public Classe()
   {
      System.out.println("Classe");
   }
}

se si istanziano le classi

public class CostruttoriTest1
{
   public static void main(String args[])
   {
      SuperSuperClasse s_s_classe = new SuperSuperClasse();   System.out.println();
      SuperClasse        s_classe = new SuperClasse();        System.out.println();
      Classe               classe = new Classe();
   }
}

è possibile seguire le sequenze di metodi costruttori attivati implicitamente

Super Super Classe

Super Super Classe
Super Classe

Super Super Classe
Super Classe
Classe