2010-10-03 20 views
8

Soy consciente de que la mayoría de las cosas en los lenguajes de programación modernos son al menos parcialmente según las características de los idiomas anteriores.¿De dónde sacó Java la idea de las interfaces?

Esto me lleva a preguntarme de dónde sacó Java la inspiración para las interfaces. ¿Era principalmente su propia creación? ¿Estaba basado en clases base abstractas (con herencia múltiple)?

+0

Estoy bastante seguro de que esto es una tontería. –

+0

¿Podría decirme de qué se engaña? Me encantaría ver las respuestas para eso también. –

Respuesta

7

En un libro reciente de Objective-C que estaba leyendo Learn Objective-C on the Mac, los autores sugieren que la inspiración principal para las interfaces de Java es la implementación de Objective-C de Formal Protocols.

protocolos formales en Obj-C son los archivos, al igual que las interfaces de Java, que están llenos de métodos abstractos - o sencillamente sólo las cabeceras de método - que el desarrollador debe implementar si se utiliza el protocolo formal. En la actualización más reciente de Cocoa de Apple, los protocolos formales también pueden incluir métodos opcionales que el desarrollador no necesita implementar si la clase implementa el protocolo.

+3

El equipo de diseño de Java conocía muy bien al equipo de diseño de Objective-C, y más tarde cuando NeXTStep comenzó a rodear el desagüe, muchos de ellos abandonaron el barco y se unieron a Sun. Los protocolos no son lo único que tomaron de Objective-C; de hecho, todo el modelo de objetos e incluso casi todo el lenguaje están tomados de Objective-C. Java es más o menos Objective-C - C + GC. –

+0

¿Pensé que las partes orientadas a objetos de Objective-C se escribieron de forma dinámica? –

0

En realidad, proviene de la idea de la herencia múltiple y la clase abstracta. Nuestro querido Sr. Goslin no quería la herencia múltiple en el nivel de clase.

6

Creo que los diseñadores de Java se dieron cuenta de que hay a lot of flaws in using multiple implementation inheritance, pero aún querían poder multiplicar la herencia. Por lo tanto, la solución fue multiple interface inheritance.

Además, desde el enlace anterior:

En cambio, los diseñadores de Java eligieron permiten interfaz de herencia múltiple a través del uso de interfaces, una idea tomado de protocolos de Objetivo C. La herencia de interfaz múltiple permite un objeto heredar muchas firmas de método diferentes con la advertencia de que el objeto heredado debe implementar esos métodos heredados.

Entonces, Sean es de hecho correcto.

Cuestiones relacionadas