[RESOLVIDO]Acessar SET de uma subclasse

4 respostas
williamdasflores

Boa noite Galera!

Tenho uma classe Pessoa:
public class Pessoa {
	private String nome;
	private int idade;
	
	public Pessoa(String nome, int idade)
	{
		this.nome = nome;
		this.idade = idade;
	}
	
	public Pessoa()
	{
		this.nome = null;
		this.idade = 0;
	}
	
	public String getNome()
	{
		return nome;
	}
	public void setNome(String nome)
	{
		this.nome = nome;
	}
	
	public int getIdade()
	{
		return idade;
	}
	public void setIdade(int idade)
	{
		this.idade = idade;
	}
}
Tenho uma classe Amigo que extends de Pessoa:
public class Amigo extends Pessoa {
	private String dataAniversario;
	
	public Amigo()
	{
		this.dataAniversario = null;
	}
	
	public String getDataAniversario()
	{
		return dataAniversario;
	}
	public void setDataAniversario(String dataAniversario)
	{
		this.dataAniversario = dataAniversario;
	}
E tenho uma classe Agenda
public class Agenda{
	Pessoa pessoas[];
	private int i = 0;
	private int quantAmigos = 0;
	private int quantConhecidos = 0;
	private int aleatorio = 0;
	
	public Agenda(int tamanho)
	{
		pessoas = new Pessoa[tamanho];
		for(i = 0; i < pessoas.length; i++)
		{
			aleatorio = 1+(int)(Math.random()*2);
			if(aleatorio == 1)
				pessoas[i] = new Amigo();
			else if(aleatorio == 2)
				pessoas[i] = new Conhecido();
		}
	}
	
	public void addInformacao()
	{
		Scanner sc = new Scanner(System.in);
		for(i = 0; i < pessoas.length; i++)
		{
			System.out.println("Digite o nome da posição "+i);
			String nome = sc.next();
			System.out.println("Digite a idade da posição "+i);
			int idade = sc.nextInt();
			
			if(pessoas[i] instanceof Amigo)
			{
				System.out.println("Digite o aniversário DD/MM/AA");
				String aniversario = sc.next();
				pessoas[i].setDataAniversario(aniversario); //aqui esta dando erro
			}
Algume pode me dizer como faço para poder acessaro metodo set da classe Amigo????

4 Respostas

drsmachado
Amigo amigo = new Amigo();
amigo.setIdade(32);
Lucas_Abbatepaolo

tente isto

((Amigo)pessoas[i]).setDataAniversario(aniversario);
E

Vc nao vai conseguir fazer isso.

a classe Pessoa não tem o método setDataAniversario,

assim necessariamente precisa fazer um cast igual nosso amigo informou

williamdasflores

OK, pessoal consegui.
Obrigado a Todos!!

Criado 12 de maio de 2011
Ultima resposta 13 de mai. de 2011
Respostas 4
Participantes 4