variable una otra objeto llamar interfaces implementacion ejercicios ejemplo desde como clases clase abstractas abstracta java class nested extend anonymous

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() { ...