¿Hay alguna manera de NO implementar todos los métodos de una interfaz en una clase heredada?no implementando todos los métodos de interfaz. ¿Es posible?
Respuesta
La única forma de evitar esto es declarar su clase como abstract
y dejar que una subclase implemente los métodos faltantes. Pero, en última instancia, alguien en la cadena tiene que implementarlo para cumplir con el contrato de interfaz. Si realmente no necesita un método en particular, puede implementarlo y luego return
o lanzar alguna variedad de NotImplementedException
, lo que sea más apropiado en su caso.
Tengo una pregunta de seguimiento. Siempre he implementado solo la función 'compare()' de la interfaz 'Comparator' para ordenar objetos usando' Arrays.sort() '. Pero ahora que abro el [Javadoc] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html), veo que hay muchos más métodos definidos allí. ¿Cómo, entonces, he podido hacer esto? –
Define esa clase como una clase abstract
. Sin embargo, debe implementar esos métodos no implementados cuando desee crear una instancia de este (ya sea mediante el uso de una subclase o una clase anónima).
Si desea una clase instanciable, no es posible. Sin embargo, puede intentar definir una clase abstract
.
El punto de una interfaz es garantizar que un objeto exteriormente comportarse como la interfaz especifica que se
Si no se implementa todos los métodos de la interfaz, lo que destruye todo el propósito de una interfaz .
+1 para señalar la naturaleza contractual de una interfaz – fvu
Es posible y es fácil. Codifiqué un example.
Todo lo que tienes que hacer es heredar de una clase que implementa el método. Si no te importa una clase que no sea instanciable, entonces también puedes definir una clase abstract
.
Eso significa que están implementadas. –
@TonyHopkinson Están implementados, pero no en la clase. – emory
Bueno, sí, pero la pregunta era cómo no implementar no cómo implementar en otro lugar. –
Me hice la misma pregunta, y luego aprendí sobre Adapters. Solucionó mi problema, tal vez puede resolver el tuyo. Esto lo explica muy bien: https://blogs.oracle.com/CoreJavaTechTips/entry/listeners_vs_adapters
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/18790848) –
Podemos anular todos los métodos de interfaz en abstract
clase primaria y en la clase secundaria anular solo aquellos métodos requeridos por esa clase secundaria particular.
interfaz
public interface MyInterface{
void method1();
void method2();
void method3();
}
Clase abstracta de Padres
public abstract class Parent implements MyInterface{
@Override
public void method1(){
}
@Override
public void method2(){
}
@Override
public void method3(){
}
}
En sus clases hijas
public class Child1 extends Parent{
@Override
public void method1(){
}
}
public class Child2 extends Parent{
@Override
public void method2(){
}
}
- 1. IntelliJ ¿es posible agregar @Overrrides a todos los métodos de una interfaz en particular?
- 2. Implementando algunos métodos de una clase de interfaz-C#
- 3. Obtener todos los beans implementando una interfaz genérica en Spring
- 4. ¿Cómo encontrar todos los métodos anulando los métodos de superclase/interfaz sin la anotación @Override?
- 5. ¿Es posible tener métodos dentro de los métodos?
- 6. ¿Es posible tener una interfaz que tenga métodos privados/protegidos?
- 7. Implementando la interfaz C#
- 8. Implementando la interfaz Iterable
- 9. registrar todos los métodos?
- 10. ¿Implementando propiedades de interfaz en interfaces?
- 11. ¿Es posible definir una interfaz no genérica que puede tener métodos genéricos?
- 12. Por qué los métodos de interfaz no tienen cuerpo
- 13. ¿Es posible simular los métodos de registro de NLog?
- 14. métodos de interfaz no puede haber protegidas
- 15. ¿Es posible redefinir los métodos Java de Clojure?
- 16. ¿Es posible sobrecargar los métodos múltiples de Clojure en Arity?
- 17. ¿Implementando métodos abstractos en tiempo de ejecución?
- 18. copie todos los nombres de métodos - Intellij
- 19. ¿Es posible imitar la interfaz Go en C/C++?
- 20. Obtenga los atributos de los métodos de interfaz y los métodos de clase
- 21. ¿Es posible usar getters/setters en la definición de interfaz?
- 22. Implementar una interfaz con métodos genéricos
- 23. Objetos de burla: ¿declara todos los métodos como virtuales o usa la interfaz?
- 24. Implementando la interfaz INamingContainer para UpdatePanel?
- 25. ¿Cómo colapsar todos los métodos en XCode?
- 26. PHPUnit: simula todos los métodos, excepto algunos
- 27. Obtener todos los tipos implementando el tipo genérico abierto específico
- 28. PHP: ¿Es posible obtener automáticamente todos los datos POST?
- 29. Implementando una interfaz gráfica basada en nodos?
- 30. ¿Es posible encadenar métodos de diferentes características?
ver http: // stackoverfl ow.com/questions/2294738/confusion-in-regarding-implementing-interface-methods?rq=1 – fvu
¿cuál sería su caso de uso? –
Una buena redacción en [Principio de segregación de interfaz] (https://realm.io/news/donn-felker-solid-part-4/) – AimanB