Olá,
Tenho uma classe Interface que serve apenas para a impressao de dados na tela.
Tenho várias classes, como por exemplo: Livro, Jornal, Cd … e todas estas sao subclasses da classe Acervo.
O meu método para a impressao das informações, recebe um objeto do tipo Acervo como mostrado abaixo:
public class Interface {
public static void mostraAcervo(Acervo acervo) {
if(acervo instanceof Cartaz){
System.out.println(
"Título: "+ acervo.getTitulo()+" - "+acervo.getnEdicao()+ " - "+acervo.getCidade()+ " - "+ acervo.getEditora()+ " - "+acervo.getAno()+
"\n Palavras-chave:"+"\n 1."+acervo.getPalavraChave1()+"\n 2."+acervo.getPalavraChave2()+"\n 3."+acervo.getPalavraChave3());
}else if(acervo instanceof Cd){
//AQUI EU TERIA QUE IMPRIMIR OS DADOS QUE SAO COMUM A TODAS CLASSES(atributos da classe Acervo) e também alguns outros atributos como o tempo de duração (no caso do Cd) no qual eu teria que acessar com um get. Para ilustrar melhor ficaria assim: acervo.getDuracao() - mas claro que não é possível fazer isso ja que a classe acervo não contém o método getDuracao() e quem o contém é a classe filha(Cd)
}
Então pessoal, como posso fazer para exibir estes atributos que são exclusivos da subclase?
Obrigado
[quote=mano8801]Olá,
Tenho uma classe Interface que serve apenas para a impressao de dados na tela.
Tenho várias classes, como por exemplo: Livro, Jornal, Cd … e todas estas sao subclasses da classe Acervo.
O meu método para a impressao das informações, recebe um objeto do tipo Acervo como mostrado abaixo:
public class Interface {
public static void mostraAcervo(Acervo acervo) {
if(acervo instanceof Cartaz){
System.out.println(
"Título: "+ acervo.getTitulo()+" - "+acervo.getnEdicao()+ " - "+acervo.getCidade()+ " - "+ acervo.getEditora()+ " - "+acervo.getAno()+
"\n Palavras-chave:"+"\n 1."+acervo.getPalavraChave1()+"\n 2."+acervo.getPalavraChave2()+"\n 3."+acervo.getPalavraChave3());
}else if(acervo instanceof Cd){
//AQUI EU TERIA QUE IMPRIMIR OS DADOS QUE SAO COMUM A TODAS CLASSES(atributos da classe Acervo) e também alguns outros atributos como o tempo de duração (no caso do Cd) no qual eu teria que acessar com um get. Para ilustrar melhor ficaria assim: acervo.getDuracao() - mas claro que não é possível fazer isso ja que a classe acervo não contém o método getDuracao() e quem o contém é a classe filha(Cd)
}
Então pessoal, como posso fazer para exibir estes atributos que são exclusivos da subclase?
Obrigado
[/quote]
Que tal polimorfismo???
public class Cartaz extends Acervo {
...
@override
public String toString() {
\retorna a impressao para cartaz
}
}
public class Cd extends Acervo {
...
@override
public String toString() {
\retorna a impressao para Cd
}
}
...todas as outras mais que estendem acervo
E entao na impressao
public class Interface {
public static void mostraAcervo(Acervo acervo) {
System.out.println(acervo);
}
}