A cópia do código é a seguinte:
Classe pública Derive Base Extende
{
Membro privado M1 = novo membro ("Membro 1");
{
System.out.println ("Initial Block ()");
}
public deriv () {
System.out.println ("deriv ()");
}
membro privado m2 = novo membro ("membro 2");
private int i = getInt ();
private int getint ()
{
System.out.println ("getint ()");
retornar 2;
}
public static void main (string [] args)
{
new deriv ();
}
}
base de classe
{
base pública ()
{
System.out.println ("base ()");
}
}
membro da classe
{
Membro público (String M)
{
System.out.println ("membro ()"+m);
}
}
/*Saída do programa:
Base()
Membro () Membro 1
Bloco inicial ()
Membro () Membro 2
getint ()
Deriva ()
*/
A conclusão é a seguinte: sem considerar a inicialização dos membros estáticos, ao chamar o construtor de um objeto, o programa chama primeiro o construtor da classe pai (o construtor da classe pai pode ser especificado através da super -palavra, caso contrário, o construtor sem parâmetros será chamado por padrão A variável não possui um valor especificado, o valor padrão é atribuído, ou seja, os dados básicos que o tipo é 0 ou falso, etc., e o objeto é nulo;