Sobreescrever métodos de uma interface

13 respostas
W

É obrigatório sobreescrever todos os métodos de uma interface que determinada classe implementa?
É possível sobreescrever apenas alguns e deixar outros de lado? Como se a classe que implementa não os tivesse?

13 Respostas

tmvolpato

É obrigatório sobreescrever todos os métodos de uma interface que determinada classe implementa?

Não é obrigatório

É possível sobreescrever apenas alguns e deixar outros de lado? Como se a classe que implementa não os tivesse?

Sim é possivel

Dica: Não fique criando métodos para não ser usados, (um dia ainda vou usar esse método) não pense dessa maneira

Rodrigo_Sasaki

tmvolpato:
É obrigatório sobreescrever todos os métodos de uma interface que determinada classe implementa?

Não é obrigatório

É possível sobreescrever apenas alguns e deixar outros de lado? Como se a classe que implementa não os tivesse?

Sim é possivel

Dica: Não fique criando métodos para não ser usados, (um dia ainda vou usar esse método) não pense dessa maneira

É claro que é obrigatório sobrescrever todos os métodos da interface que a classe implementa.

Mesmo que você não coloque uma linha de código dentro do método, você tem que sobrescrevê-lo. É isso que garante as chamadas polimórficas.

W

Há alguma palavra chave para torná-los opcionais?

Quando crio a interface, e implemento ela, meu compilador aparentemente exige que eu sobreescreva todos os métodos…

A interface está mais ou menos assim:

public interface Classe {

  ();



}
tmvolpato

[quote=digaoneves][quote=tmvolpato]É obrigatório sobreescrever todos os métodos de uma interface que determinada classe implementa?

sim é obrigatório

tmvolpato

digaoneves:
tmvolpato:
É obrigatório sobreescrever todos os métodos de uma interface que determinada classe implementa?

Não é obrigatório

É possível sobreescrever apenas alguns e deixar outros de lado? Como se a classe que implementa não os tivesse?

Sim é possivel

Dica: Não fique criando métodos para não ser usados, (um dia ainda vou usar esse método) não pense dessa maneira

É claro que é obrigatório sobrescrever todos os métodos da interface que a classe implementa.

Mesmo que você não coloque uma linha de código dentro do método, você tem que sobrescrevê-lo. É isso que garante as chamadas polimórficas.

Cara valeu pelo alerta…

entendi outra coisa

mal ai

Rodrigo_Sasaki

wgenuino:
Há alguma palavra chave para torná-los opcionais?

Quando crio a interface, e implemento ela, meu compilador aparentemente exige que eu sobreescreva todos os métodos…

A interface está mais ou menos assim:

public interface Classe {

  ();



}</blockquote>

Não existe isso, se você implementa uma interface é obrigado a sobrescrever todos os métodos dela.
tmvolpato

wgenuino:
Há alguma palavra chave para torná-los opcionais?

Quando crio a interface, e implemento ela, meu compilador aparentemente exige que eu sobreescreva todos os métodos…

A interface está mais ou menos assim:

public interface Classe {

  ();



}</blockquote>

Amigo entedi errado sua pergunta

A classe que implementa uma interface que possui métodos
ela tem que implementa todos os métodos dessa interface

por isso crie apenas o que for usar

desculpe pelo fail…

rmendes08

wgenuino:
Há alguma palavra chave para torná-los opcionais?

Quando crio a interface, e implemento ela, meu compilador aparentemente exige que eu sobreescreva todos os métodos…

A interface está mais ou menos assim:

public interface Classe {

  ();



}</blockquote>

Sim, e é ótimo que seja assim. Isso é sinal de que a sua interface contém métodos demais. Se nem todos os métodos são necessários na implementação da sua interface, então separe a sua interface em 2 ou mais. Lembrando que uma classe pode implementar quantas interfaces forem necessárias.

W

Certo, entendi. Obrigado pessoal =]

S

Não é obrigatório SE (e apenas SE) a classe que implementar for abstrata.

Quis dizer, implementar o metodo. Se uma classe abstrata implementa uma interface ela não precisa sobrescrever os metodos.

SierraEx

Todos os métodos de uma interface(mesmo que você explicitamente não coloque os modificadores) são public e abstract.

Então mesmo que você escreva em uma interface:

void run();

Você está escrevendo, na verdade:

public abstract void run();

Então, se todos os métodos são public e abstract, chegamos a conclusão que eles devem ser implementados na primeira classe não abstrata que implementa a interface.

Há um detalhe, se uma classe extends uma classe que implementa uma interface, e essa classe já implementou os métodos da interface, a classe filha não precisa implementar os métodos da interface mesmo que, na declaração, informamos que ela implementa a interface, exemplo:

public interface Inter {
    void run(); //public abstract void run();
}
public class A implements Inter {
  public void run() {} //"cumpriu o contrato"
}

Vejamos que a classe filha não implementa run(), pois ela é filha de A que já implementa Inter, mesmo que informamos implements Inter

public class B extends A implements Inter {
    //ok
}
maykoone

Como o amigo aí em cima disse, a primeira classe concreta que implementa uma interface precisa obrigatoriamente implementar os métodos.

Não sei do que se trata o teu projeto, mas parece haver um problema de coesão no seu design, tente dividir os métodos em outras interfaces e implementar só aquela que você precise.

nel

Só para deixar claro, somente classes concretas devem implementar métodos declarados em uma interface.
Se tem métodos que você precisa em uma interface e em outra não, vejo duas alternativas:

1 - Crie uma segunda (terceira, quarta, quinta…) interface com os outros métodos

2 - Crie uma segunda interface que extenda a “principal”. Quando precisares de todos os métodos, implementa a interface filha, caso contrário, somente a pai.

Criado 13 de setembro de 2012
Ultima resposta 13 de set. de 2012
Respostas 13
Participantes 8