¿Podemos crear una instancia de una interfaz en Java?

¿Es posible crear una instancia de una interfaz en Java?

En alguna parte que he leído que usando una clase anónima interna podemos hacerlo como se muestra a continuación:

interface Test { public void wish(); } class Main { public static void main(String[] args) { Test t=new Test() { public void wish() { System.out.println("output: hello how ru"); } }; t.wish(); } } cmd> javac Main.java cmd> java Main output: hello how ru 

¿Es correcto aquí?

Sí, tu ejemplo es correcto. Las clases anónimas pueden implementar interfaces, y esa es la única vez que se me ocurre que verá una clase que implementa una interfaz sin la palabra clave “implementa”. Vea otra muestra de código aquí:

 interface ProgrammerInterview { public void read(); } class Website { ProgrammerInterview p = new ProgrammerInterview () { public void read() { System.out.println("interface ProgrammerInterview class implementer"); } }; } 

Esto funciona bien Fue tomado de esta página:

http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/

Nunca puedes instanciar una interfaz en java. Sin embargo, puede referirse a un objeto que implementa una interfaz por el tipo de interfaz. Por ejemplo,

 public interface A { } public class B implements A { } public static void main(String[] args) { A test = new B(); //A test = new A(); // wont compile } 

Lo que hizo arriba fue crear una clase Anónima que implementa la interfaz. Está creando un objeto anónimo, no un objeto de tipo interface Test .

Respuesta corta … sí. Puede usar una clase anónima cuando inicializa una variable. Eche un vistazo a esto

Normalmente, puede crear una referencia para una interfaz. Pero no puedes crear una instancia para la interfaz.

No, en mi opinión, puede crear una variable de referencia de una interfaz, pero no puede crear una instancia de una interfaz como una clase abstracta.

Si es correcto. puedes hacerlo con una clase interna.

Sí, podemos: “Las clases anónimas te permiten hacer que tu código sea más conciso. Te permiten declarar y crear instancias de una clase al mismo tiempo. Son como clases locales, excepto que no tienen un nombre” – >> Java Doc.

Intereting Posts