Duvidas na instanciação

2 respostas
A

Boa noite amigos, sou novo no fórum e em java, e estou com uma dúvida quanto a instanciação, fiz um programa simples onde recebe dados de um funcionário(superclasse) e posteriormente recebe dados de um professor do ensino médio ou ensino infantil(subclasses), utilizei para isto um vetor de classes, sendo isso dito, na hora de criar o programa utilizei o segundo código na main.

Scanner read = new Scanner(System.in);
    	Funcionario[] func = new ProfessorEM[99];
   
   System.out.print("1-EM 2-EI"); 
       escolha = read.nextInt();
       
   while(escolha != 99){
   
   x++;
     
   	System.out.print("Funcionario...");
    System.out.print("Digite o nome do funcionario: ");
    String nome = read.next();
    System.out.print("Digite a matricula do funcionario: ");
    int matricula = read.nextInt();
    System.out.print("Digite o endereco do funcionario: ");
    String endereco = read.next();
   if(escolha == 1){
   
    System.out.print("ProfessorEM...");
    System.out.print("Digite o valor da hora: ");
    float valorHora = read.nextFloat();
    System.out.print("Digite as aulas semanais: ");
    int aulasSemanais = read.nextInt();
    func[x] = new ProfessorEM(nome,endereco,matricula,valorHora,aulasSemanais);
  }
   	else{
   		    System.out.print("ProfessorEI...");
    System.out.print("Digite o salario base: ");
    float salarioBase = read.nextFloat();
    
   	}
   System.out.print("1-EM 2-EI"); 
       escolha = read.nextInt();
       System.out.print(func[x]);
       System.out.print(func[0]);
   
   }
    
    
    }
}

minha duvida é a seguinte , na parte Funcionario[] func = new ProfessorEM[99]; , funcionou de varias maneiras diferentes como ProfessorEM[] func = new ProfessorEM[99]; como tambem Funcionario[] func = new Funcionario[99]; , gostaria de saber qual a diferença entre elas, e qual a maneira mais correta nessa caso, gostaria também de uma explicação detalhada dessa linha de instanciação, corrijam-me se estiver errado, o primeiro nome é o tipo a ser instanciado,o segundo é a variável que guardará o endereço de memória apontando pro objeto a ser instanciado, o new realiza a instanciaçao e a ultima palavra é a classe a ser instanciada. Obrigado

2 Respostas

andre.santos

Olá!

Este conceito (Classe e Subclasse) se chama Hierarquia/Herança. Isso é muito utilizado numa coisinha chamada Polimorfismo. Dá uma lida no http://www.guj.com.br/posts/list/126117.java#681696, onde o Lavieri explica o que é e como utilizar este conceito.

Espero ter ajudado!

Abraços!

A

Não é bem isso que estou procurando amigo, estou com uma duvida maior na parte de instanciação, hierarquia e polimorfismo eu já peguei bem, mas obrigado.

Criado 3 de outubro de 2009
Ultima resposta 4 de out. de 2009
Respostas 2
Participantes 2