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