[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
Construtores, super() e outros.
- Subject: Construtores, super() e outros.
- From: Jorge Francisco Del Teglia <PROTECTED>
- Date: Thu, 11 Apr 2002 12:13:02 -0300
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();
}
}
}