Sobreescrever métodos de uma interface

É 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?

É 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

[quote=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[/quote]

É 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.

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 {
();

}

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

sim é obrigatório

[quote=digaoneves][quote=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[/quote]

É 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.
[/quote]

Cara valeu pelo alerta…

entendi outra coisa

mal ai

[quote=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 {
();

}[/quote]
Não existe isso, se você implementa uma interface é obrigado a sobrescrever todos os métodos dela.

[quote=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 {
();

}[/quote]

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…

[quote=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 {
();

}[/quote]

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.

Certo, entendi. Obrigado pessoal =]

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.

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
} 

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.

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.