¿Cómo puede una clase anónima extender una superclase o implementar una interfaz?¿Cómo puede una clase anónima usar "extender" o "implementar"?
Respuesta
Las clases anónimas deben extender o implementar algo, como cualquier otra clase de Java, incluso si es solo java.lang.Object
.
Por ejemplo:
Runnable r = new Runnable() {
public void run() { ... }
};
Aquí, r
Es un objeto de una clase anónima que implementa Runnable
.
Una clase anónima puede extender otra clase utilizando la misma sintaxis:
SomeClass x = new SomeClass() {
...
};
Lo que no puede hacer es implementar más de una interfaz. Necesitas una clase con nombre para hacer eso. Ni una clase interna anónima, ni una clase nombrada, sin embargo, pueden extender más de una clase.
No creo que la segunda expresión sea correcta. Ya has declarado el nombre de la clase como SomeClass, ya no es anónimo. Consulte este enlace http://docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm Cuando "nueva" una interfaz, se crea una clase anónima extendiendo la clase "Object" e implementando esa interfaz. Pero mientras esté "actualizando" una clase con la primera expresión que escribió, se creará una clase anónima (de hecho, es una instancia de esa clase anónima) extendiendo esa clase. – lixiang
@youmiss: La segunda expresión creará una instancia de una clase anónima que se extiende 'SomeClass'. Todavía es anónimo, debido al '{...}'. – skaffman
Ya veo, pasé por alto el {...}. – lixiang
Una clase anónima normalmente implementa una interfaz:
new Runnable() { // implements Runnable!
public void run() {}
}
JFrame.addWindowListener(new WindowAdapter() { // extends class
});
Si se refiere a si se puede aplicar 2 o más interfaces, lo que yo creo que eso no es posible. A continuación, puede hacer una interfaz privada que combine los dos. Aunque no puedo imaginar fácilmente por qué desea una clase anónima que tiene que: clases
public class MyClass {
private interface MyInterface extends Runnable, WindowListener {
}
Runnable r = new MyInterface() {
// your anonymous class which implements 2 interaces
}
}
anónimos siempre extienden superclase o implementa las interfaces. por ejemplo:
button.addActionListener(new ActionListener(){ // ActionListener is an interface
public void actionPerformed(ActionEvent e){
}
});
Por otra parte, a pesar de clase anónima no puede implementar múltiples interfaces, puede crear una interfaz que se extiende otra interfaz y deje que su clase anónima ponerlo en práctica.
// The interface
interface Blah {
void something();
}
...
// Something that expects an object implementing that interface
void chewOnIt(Blah b) {
b.something();
}
...
// Let's provide an object of an anonymous class
chewOnIt(
new Blah() {
@Override
void something() { System.out.println("Anonymous something!"); }
}
);
Una clase anónima está extendiendo o implementar mientras que la creación de su objeto Por ejemplo:
Interface in = new InterFace()
{
..............
}
clase Aquí anónimo está implementando la interfaz.
Class cl = new Class(){
.................
}
aquí anónimo La clase extiende de forma abstracta Clase.
No veo la diferencia.Como tuyo es diferente al mío – trapedInBatcaveWithBAtman
- 1. ¿Puede una clase extender una clase e implementar una interfaz?
- 2. ¿Puede una clase anónima de C# implementar una interfaz?
- 3. cómo extender LoginUrlAuthenticationEntryPoint o cómo implementar AuthenticationEntryPoint
- 4. ¿Puede una clase extender dos clases?
- 5. ¿Puede una clase Scala extender múltiples clases?
- 6. ¿Debo extender la clase Binder o usar un Messenger?
- 7. ¿Puede un cierre Groovy extender una clase abstracta
- 8. Acceso campo de una clase anónima exterior de una clase anónima interna
- 9. ¿Cómo nueva clase anónima dinámica?
- 10. ¿Debería su clase implementar ActionListener o usar un objeto anónimo ActionListener clase
- 11. ¿Se puede extender (heredar) una clase no abstracta en Java?
- 12. clase anónima interfaz
- 13. Construcción de clase anónima
- 14. ¿Cómo agregar @SerialVersionUID a una clase anónima?
- 15. C# implementación anónima de la interfaz (o clase abstracta)
- 16. ¿Por qué un rasgo de Scala puede extender una clase?
- 17. ¿Puede una clase abstracta extender otra clase abstracta y aumentar la funcionalidad?
- 18. java extender o ajustar una clase para agregar funcionalidad adicional
- 19. cruce de clase anónima
- 20. al extender una clase usando ExtJS
- 21. cómo extender Python init clase
- 22. Cómo extender la clase css
- 23. volver más de una instancia de una clase interna anónima
- 24. Anotar clase interna anónima
- 25. ¿Cómo sobrescribir/extender una clase interna desde una subclase?
- 26. ¿Cómo pasar parámetros a la clase anónima?
- 27. ¿Se puede implementar una interfaz en una clase Linq2Sql?
- 28. ¿Cómo se puede extender una aplicación django conectable?
- 29. ¿Cómo implementar/usar log4j?
- 30. Extender la clase Singleton abstracta
Sí. Puede hacerlo como cualquier otra clase. –
Desafortunadamente, tiene que hacer que el constructor sea visible en lugares que de otra manera no sería. –