Teoricamente está correto, você pode trabalhar com interfaces de formas diferentes, ex:
public interface Teste {
void metodoImportante();
void metodoNaoImportante();
}
:arrow: Você pode ter uma classe concreta que implementa a interface:
public class TesteImpl implements Teste {
public void metodoImportante() {
//implementação
}
void metodoNaoImportante() {
//implementação
}
}
:arrow: Você pode ter uma classe abstrata que implementa nenhum, um ou todos os métodos… essa abordagem é útil quando você quer centralizar um comportamento comum, ou seja, em vez de todos escreverem o mesmo metodo, fica tudo na classe abstrata. Essa abordagem é uma padrão de projetos chamado Template Method
public abstract class BaseTeste implements Teste {
public void metodoImportante() {
//só implemento este, as subclasses deverão implementar o outro, e também poderão redefinir este se quiserem.
}
}
:arrow: E você também pode utilizar um Adapter, que é outro padrão de projeto e funciona da seguinte maneira: se você tem uma interface com determinados métodos, mas alguns deles não tem muita utilidade pra algumas das classes que implementariam a interface, você pode fazer uma classe concreta com implementações vazias ou muito básicas dos métodos da interface, para evitar que todas as classes que implementam a interface tenha q implementar esse método sem precisar dele, ex:
public abstract class TesteAdapter implements Teste {
public void metodoImportante() { }
public void metodoNaoImportante() { }
}
Agora a classe que precisar implementar a interface, pode extender o adapter e só redefinir os métodos que precisar…
Fiz esses códigos aí de cabeça, sem compilar, foi mais pra te passar a idéia do negócio mesmo. Existem outras formas, mas estas acho que são as básicas…
[]´s