[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Construtores, super() e outros.



Oi pessoal,

apos a aula (5 minutos atras...) fiz o seguinte teste, que acho que
ajuda a desvendar algumas das incognitas levantadas no final da aula.

Existem duas hierarquias de classes para serem realizados dois testes:

1) A e B
2) PaiDeC e C

Ao rodar a aplicação pode-se perceber que quando na subclasse não é
especificada a chamada a super(), o compilador (precompilador?) força a
chamada, sempre ao construtor default da superclasse.
Em qualquer caso, um objeto PRECISA que a parte dele definida nas
superclasses seja inicializada (isto é, no construtor). Se não fosse
assim, poderiamos ficar, por descuido, com objetos parcialmente
inicializados.


abraços, 


-- 
 Jorge Francisco Del Teglia   

<PROTECTED>
<PROTECTED>
<PROTECTED>

class A
{
    A()
    {
        System.out.println( "Executing A()..." );
    }

    A( int num ) throws java.io.IOException
    {
    }
}


class B extends A
{
    B()
    {
        System.out.println( "Executing B()..." );
    }

    B( String s )
    {
        System.out.println( "Executing B( String )..." );
    }
}


class PaiDeC
{
    PaiDeC() throws java.io.IOException
    {
        System.out.println( "Executing PaiDeC()..." );
    }
}

class C extends PaiDeC
{
    C() throws java.io.IOException
    {
        System.out.println( "Executing C()..." );
    }
}


class Tester
{
    public static void main( String[] args )
    {
        try
        {
            B umB = new B();
            B outroB = new B( "oi!" );

            C umC = new C();
        }
        catch ( Exception e )
        {
            e.printStackTrace();
        }

    }
}