2012-05-18 20 views

Respuesta

5

No, no lo es. No se puede crear una instancia de una interfaz para formar un objeto, es no una clase.

+0

¿Está seguro de ** la interfaz no se puede crear una instancia **? entonces ¿qué pasa con la clase anónima? –

+1

@Quoi: como usted mismo dijo, clase anónima: una implementación anónima de alguna interfaz. –

1

Ninguna interfaz es una subclase de la clase Object, ya que la interfaz no puede extender una clase implícita o explícita.

Motivo para el constructor es crear una instancia, ya que la interfaz no se puede instanciar, ya que no proporcionan ninguna funcionalidad, solo son un contrato, solo la clase puede crearse una instancia, por lo tanto tienen constructor.

1

Una interfaz es una colección nombrada de definiciones de métodos (sin implementaciones). Una interfaz también puede incluir declaraciones constantes.

La interfaz y la clase tienen una diferencia básica y una de ellas es que no tiene un constructor. En realidad, la interfaz no está hecha para eso y no se puede crear una instancia de la interfaz, pero hay una forma de que aún puedas crear una instancia de la interfaz.

interface Interface{ 
    abstract String fun(); 
} 

Interface interfc=new Interface() { 
    @Override 
    public String fun() { 
     return super.toString(); 
    } 
}; 

Type type=interfc.getClass(); 

Aquí la interfaz ha sido instanciada como clase anónima. Pero todavía no se puede colocar el constructor aquí de acuerdo con las especificaciones del lenguaje java. Pero aún puede usar la clase super que será inmediatamente superclase de esta clase anónima.

An anonymous class cannot have an explicitly declared constructor. 

Y hay una solución alternativa de esto que está utilizando la variable final en superclase.

0

Si bien algunas personas sugieren pensar en las interfaces como "can-do" en lugar de "is-a" relaciones, creo que es más útil pensar en ellas "is a __er" o "is a __able thing". Para usar una analogía del mundo real, un libro (edición de árbol muerto), una revista de papel encuadernado, un periódico, un volante publicitario promocional, un letrero y un trozo de papel con algunas palabras escritas en él, son todas "cosas legibles". ". Si alguien le mostrara a otra persona un libro y le preguntara "¿Es esto legible?", La respuesta sería que sí lo es. Por otro lado, si alguien le muestra un libro a otra persona y pregunta "¿Qué es esto?" la respuesta no sería "Algo legible", sino más bien "Un libro", o quizás "Una copia de tapa dura de la quinta impresión de la segunda edición estadounidense de la novela 'Grandes esperanzas' de Charles Dickens". Cualquier tipo de "cosa legible" tiene alguna identidad más allá de ser simplemente una "cosa legible".

Del mismo modo con las interfaces de Java. Un objeto puede implementar un número arbitrario de interfaces, pero cada objeto debe tener un tipo además del conjunto de interfaces que admite. Tenga en cuenta que es posible definir un método que devolverá un nuevo objeto de tipo desconocido que implementa una interfaz; eso sería equivalente a preguntarle a alguien: "Por favor, dame algo para leer" sin especificar qué tipo de objeto se desea. Tal método podría seleccionar un tipo de objeto para devolver, y darle al que llama uno que sea "legible". Los constructores, sin embargo, a diferencia de los métodos generales, requieren que el que llama especifique con precisión qué tipo de objeto se desea. Simplemente especificar que un objeto es "legible" no sería una especificación suficiente.

0

Ninguna interfaz no puede tener constructor. Porque la interfaz admite herencia múltiple.Eso significa que si una clase hereda dos interfaces, debido al encadenamiento del constructor habrá una ambigüedad a la cual se llamará al constructor desde el constructor de la clase.

Cuestiones relacionadas