1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Override: Passando superclasse como parâmetro na Interface, e usando subclasse na implementação

Bom dia, tenho uma interface com alguns métodos que gostaria que fossem implementados obrigatoriamente nas classes que implementam essa interface. No caso, as entidades do meu projeto devem estender uma classe Bean, e em cada controlador de janela, deve haver um método preencheDadosJanela() que recebe como parâmetro um Bean. Tenho um exemplo:

Interface:

public interface InterfaceTeste {
   public void preencheDadosJanela(Bean bean);
}

Classe que estende 'Bean':

public class TesteEntidade extends Bean implements Serializable {

///atributos....

///getters e setters

}

Classe que implementa a interface:

public class TesteBean implements InterfaceTeste {
    ///construtor...
    ///etc e tal

    @Override 
    public void preencheDadosJanela(TesteEntidade entidade) {

        ///Código
    }

O que acontece é que eu recebo um erro, dizendo que o método preencheDadosJanela(TesteEntidade entidade) não sobrescreve o método da interface, isso porque (acredito eu) que ele não vê a classe TesteEntidade como um Bean, apesar de a TesteEntidade estender a Bean. Preciso que as entidades estendam a mesma classe porque para cada janela referente a essa entidade, haverá um controlador e para todas as entidades, os metodos preencheDadosJanelas e outros serão obrigatorios, mas terão implementações diferentes.

Gostaria de saber se é possível fazer o que estou propondo, ou se devo criar o metodo na interface sem parametro algum (o que não diria nada sobre o método). É isso, não consigo fazer override do metodo da interface passando uma subclasse da classe passada no método original.

Obrigada!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags interface herança ou faça a sua própria pergunta.