Duvida Com Arrays[Resolvido]

4 respostas
sidney.tavares

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.

4 Respostas

diegohsi

Não vou me arriscar a responder errado. Tambem aguardo a reposta

evertonsilvagomesjav

Quando vc passou sua variavel “d” para o metodo adicionar voce esta passando a mesma referencia do array criado na memoria, entao tanto a variavel “e” quanto “d” apontam para o mesmo lugar, entao quando vc sobreescreve o objeto adicionado no indice 0 que era o Astolfo logo nao vai aparecer mesmo.

evertonsilvagomesjav

Um desenho bem grotesco mas da pra vc entender seria esse. Onde da pra vc perceber que suas variaveis de referencia estao apontando para o mesmo objeto.


sidney.tavares

Olá Everton,

Resposta muito esclarecedora a sua, valeu mesmo, consegui entender com as poucas linhas que você colocou e também com o desenho, mesmo tosco, como diz você, rsrsrrs, muito obrigado.

Criado 1 de novembro de 2010
Ultima resposta 2 de nov. de 2010
Respostas 4
Participantes 3