Algumas duvidas

2 respostas
duardor

Ae galera eu to com algumas duvidas em umas questoes q eu errei

Vejam esse codigo:

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

public class B extends A{ 
  B(){
	System.out.println("Class B Constructor");
  }
  public static void main(String[] args){ 
    B b = new B();  
} 
   
}
Pois é... Eu pensei que ia sair so "Class B Constructor" Mas nao... Saiu : Class A Constructor Class B Constructor

Porque?

Nao houve nenhuma chamada a super()... porque ele chamou o construtor de A? Ou super soh serve pra chamar metodos overriden da classe pai??? Meu conceito de super() está errado?

Segunda dúvida:

No codigo:

public class teste{ 
  static char staticArray[] = new char[5];
  public static void main(String[] args){ 
    System.out.println(staticArray[1]);  
} 
   
}

Bom essa eh o seguinte
Eu pensei que como a variavel staticArray eh membro entao ela seria autoinicializada... Dai pra char eh /u0000
A saida desse codigo eh nada...
/u0000 eh nada mesmo ou a variavel nao foi inicializada?

Valeu galera

2 Respostas

A

Bem no primeiro caso ele não precisa do Super pra rodar o construtor default, por isso quando vc cria um Objeto de B automaticamente ele roda o construtor de A.
No segundo caso ele inicializa sim com --> ‘’ que no caso não possui nenhum valor.

Alan

Rafael_Afonso

duardor:

  1. Quando se chama um construtor de uma classe, primeiro este chama o construtor de sua classe pai e depois o seu próprio construtor; a classe pai, por sua vez, chama da classe avô e depois o seu próprio construtor; e assim por diante até chegar até chegar a Object. Isso acontece independente da classe ter seu construtor personalizado ou não.
  2. Quando se declara um atributo de uma classe sem determinar seu valor, ele é preenchido por um valor padrão. No caso especifico de char (e você criou cinco atributos char) este valor é 0, que no Unicode equivale a /u0000. Aliás chars, ints, doubles e outros tipos numéricos possuem valor 0 por default. um tipo boolean vale false. E Objetos e Arrays (por exemplo, se você tivesse declarado seu vetor sem inicializá-lo) valem null.

Espero ter ajudado,

Criado 13 de março de 2003
Ultima resposta 13 de mar. de 2003
Respostas 2
Participantes 3