Boa Noite pessoal
Estou aqui a meio de um projecto e com problemas na implementação de umas subclasses de uma classe abstracta. Aqui vai a descrição da situação:
O UML ( é mais complexo que isto, mas só esta parte me interessa ) :
A Questão:
Quero defenir a classe Conteudo como abstracta com o método retornaValor() de modo à classe Celula poder aceder a conteudos do tipo Numero Frase e Formula. O meu primeiro passo foi declarar a classe Conteudo como abstracta e as outras 3 como subclasses de Conteudo:
public abstract class Conteudo
{
public abstract ??? retornaValor();
}
O meu problema, é que tipo de dado eu meto como retorno no método retornaValor() das subclasses? Eu tenho deta maneira, pois no meu ver o retorno deveria ser do tipo Conteudo, para depois na Celula com o getConteudo conseguir aceder:
exemplo de uma das subclasses:
public class Numero extends Conteudo{
private int inteiro;
private double flut;
public Numero() {
inteiro=0;
flut=0;
}
public Numero(int i){
inteiro=i;
flut=0;
}
public Numero(double f){
inteiro=0;
flut=f;
}
public int getInteiro() {
return inteiro;
}
public void setInteiro(int i){
inteiro=i;
}
public double getFlut() {
return flut;
}
public void setFlut(double f){
flut=f;
}
public Conteudo retornaValor(){
Numero n = new Numero();
return(n);
}
}
Agora penso que esse método está errado, pois nas classes de teste que exprimentei devolve sempre um resultado esquesito
Exemplo da classe teste:
public class testes {
public static void main(String[] args){
Conteudo c2 = new Numero(3);
Conteudo c3 = new Numero(5.3);
Celula cel2 = new Celula (2,4);
Celula cel3 = new Celula (1,3);
cel2.setConteudo(c2);
cel3.setConteudo(c3);
System.out.println("Conteudo da celula 2:"+cel2.getConteudo());
System.out.println("Conteudo da celula 3:"+cel3.getConteudo());
}
}
O resultado que dá disto tudo são coisas tipo:
Conteudo da celula 2:Numero@f5da06
Conteudo da celula 3:Numero@bd0108
…e não os valores que defeni :S
Que estou fazendo mal ? minha sugestão é a redefinição do método retornaValor() nas subclasses, mas não consigo fazer de outra maneira
Agradecia a ajuda, e lamento MUITO o tamanho deste post.Tentei ser o mais descritivo possivel.
Obrigadão