Boa noite a todos, seguindo meus estudos tenho uma dúvida com relação ao código abaixo:
import java.util.*;
class Empregado{}
class Gerente extends Empregado{}
class Diretor extends Gerente{
String nome;
Diretor(String nome){
this.nome = nome;
}
public String toString(){
return nome;
}
}
public class Teste10 {
static void adicionar(Empregado [] e){
e[0] = new Diretor("Roberto");
e[1] = new Diretor("Carlos");
e[2] = new Diretor("Marcelo");
}
public static void main(String[] args) {
Diretor [] d = new Diretor[3];
d[0] = new Diretor("Astolfo");
adicionar(d);
for(Diretor x : d)
System.out.println( x + " ");
}
}
Entendi que passar um array de Diretores para um metodo que espera receber um array de empregados neste caso é possivel, porque o array de Empregados só adiciona Diretores, porém não entendi porque o Diretor “Astolfo” não é exibido, é devido ao fato de ele tentar substituir o nome que já foi atribuido no indixe 0 do array de Empregados? Fiz um teste colocando mais uma posição no array de Diretores, e assim a String Astolfo foi impressa. Se alguém puder me ajudar didaticamente com este exemplo eu agradeço muito.Abraços.