boas pessoal. Preciso imprimir atributos superclasse a partir da subclasse.
exemplo:
public class Utente {
protected String nome;
protected String apelido;
//getters e Setters do nome e apelido
}
public class utilizador extends utente{
//outros abributos
public void imprimirDados(){
system.out.println("Nome: " + getNome());
system.out.println("Apelido: " + getApelido());
}
}
No main: utilizador u.imprimirDados(); só imprime NULL para os atributos herdados do Utente.
Solução que tenho é percorrer as 2 listas que contem as classes utente e utilizador e imprimir os atributos separados. Será que tem como obter os atributos dentro da classe filha?
public static void listarUtilizador() {
System.out.println("\tLista Utilizadores: ");
for (Utilizador aux : listaUtilizador) {
for (Utente ux : listaUtente)
if (aux.getBi() == ux.getBi()) {
aux.imprimirDados();
ux.imprimirDados();
}
}
}
Ola, os getters() e setters() estao todos definidos nas suas classes respectivas.
No problema que estou a ter. É quando tenho o objecto Utilizador dentro de um metodo que é um menu, e quero imprimir os atributos do Utilizador e do Utente que ele herdou.
exemplo:
public static void menuUtilizador(Utilizador utilizador){
System.out.println("\n\t1. Ver Perfil\n\t2. Alterar Dados\n\t3. Outras Opcoes");
System.out.println("\n\n\tEscolha uma Opcao: ");
opcao = sc.next();
switch (opcao.charAt(0)) {
case '1':
utilizador.imprimirDados();
break;
default:
break;
}
}
E quando chamo o metodo imprimirDados() do Utilizador tem como imprimir os atributos herdados da classe Utente?
Ola, consegui corrigir o problema. Quando tiver problemas é melhor postar o codigo inteiro? É que na classe principal tenho muitas linhas d codigo…
O problema era o seguinte:
Estava a instanciar os objectos do tipo Utente com o construtor Utente(bi, nome, morada, sexo, perfil) e caso for Utilizador estava a utilizar o contrutor do Utilizador(bi, username, password). E cada um seria colocado numa arraylist diferente. O que iria os ligar era o BI.
Fiz isso na prespectiva da criacao de tabelas na base de dados.
Entao mudei para a seguinte forma:
public abstract class Utente{
protected String nome;
protected String apelido;
protected String morada;
protected String naturalidade;
protected char sexo;
//construtor getters e setters
}
public class Utilizador extends Utente{
protected int codigoUtilizador;
protected String username;
protected String password;
protected String perfil;
Utilizador(nome, apelido, morada, naturalidade, sexo, perfil){
super(nome, apelido, morada, naturalidade, sexo);
}
//getters e setters
}
public class Temporario extends Utente{
Temporario(nome, apelido, morada, naturalidade, sexo){
super(nome, apelido, morada, naturalidade, sexo);
}
}
Tanto o Utilizador como o Utente irao ficar nos arraylist correspondentes.
Seria melhor criar uma topico com todas as classes e os codigos e postar aqui, assim em caso de receber ajuda ja têm onde contextualizar?