Dúvidas e "furos" no Java?

1 resposta
I

Bom pessoal sou novato no fórum e iniciante em Java, a qual eu já passei a adorar. Mas algumas dúvidas sobre o porquê algumas coisas apareceram, espero que vocês possam me ajudar. Aí vai:

class Pai {
      Padre(int i) {
             System.out.println("Pai!");
      }
 	
 
 }
 class Filho extends Padre {
       Figlio() {
             System.out.println("Filho!");
       }
 }
 
class Prog {
      public static void main(String[] args) {
            Filho p = new Filho();
      }
}

o código acima deve ser compilado sem problemas (se não digitei algo errado…) e ele mostra que o construtor “default” do Pai é chamado e depois o construtor de Filho é chamado. Até aí tudo bem, mas agora mudem a assinatura do construtor de Pai para Pai(int j) por exemplo. Vai dar um erro de compilação dizendo que não se pode achar o construtor Pai() na classe base. Qual o objetivo disso? Pra mim parece um furo na lingugagem, mas como não sei muito acho que talvez exista uma razão por trás disso que eu ainda não estou conseguindo enxergar.

Outra coisa que não entendo direito é a CLASSPATH, por que na instalação do sdk ele mesmo nao muda essas variáveis de sistema e coloca um diretório padrão para se desenvovler projetos? Ficar setando a classpath toda hora é meio tedioso.

Bom, por enquanto é só. Ah, alguém podia me dar uns toques de como usar o JUnit? Estou com um pouco de dificuldade em usá-lo, alguns exemplos simples de como e quando usá-lo seriam bem vindos.

[]´s Iver

1 Resposta

duardor

Seguinte kra…
Nao eh furo da linguagem nao, eh soh um modo de implementação, no caso , sobre construtores…
Quando vc NAO fornece um construtor para uma dada classe o JAVA te fornece o construtor padrao (sem implementacao).
Quando voce fornece um construtor qualquer o JAVA nao te fornece o construtor padrao. Se voce fornecer PAI(int i) entao o construtor PAI() nao existira e ai dara erro mesmo…
Vc tem duas opções nesse caso:
[1] - Fornecer o construtor PAI() sem nada no seu corpo
[2] - Colocar na primeira linha do seu metodo FILHO() uma chamada super(algumInteiro)

Eh isso
qq coisa posta de nova ai

PS: Vc escreveu Figlio e Padre no lugar de Filho e Pai

Abraços

Criado 23 de abril de 2003
Ultima resposta 23 de abr. de 2003
Respostas 1
Participantes 2