una - llamar un objeto desde otra clase java
En Java, ¿pueden las clases anónimas extender otra clase? (2)
Código como:
protected Interface1 varClass1 = new Interface1() {
Pero también me gustaría que esta clase anónima anidada también extienda la clase Base
, algo así como:
protected Interface1 varClass1 = new Interface1() extends Base {
....
¿Es esto posible en Java?
Si bien no es posible extender una clase e implementar una interfaz, lo que probablemente pueda hacer puede lograrse mediante la delegation .
Simplemente cree una instancia de Base
en el inicializador de su clase anónima y use sus métodos de los métodos que implementa desde Interface1
.
EDITAR : Mi respuesta asume que solo desea heredar de Base
debido a su implementación, no a su interfaz. Este es un supuesto válido dado que la interfaz de Base
no es visible después de asignar el objeto a una variable Interface1
. Por lo tanto, creo que es mejor usar la delegación aquí en lugar de crear una nueva clase.
Una clase anónima puede implementar exactamente una interfaz o extender una clase.
Una solución alternativa es crear una clase con nombre que amplíe la Base
e implemente la Interface1
, y luego usarla como la clase base para la clase anónima:
public abstract class Base1 extends Base implements Interface1 {}
...
protected Interface1 varClass1 = new Base1() {
...