Java es un lenguaje de programación presentado por primera vez en 1995 por Sun Microsystems. Ambas interfaces y clases abstractas se utilizan en el código Java cuando varios subtipos de la misma clase tienen que comportarse de manera diferente . Las clases abstractas e interfaces funcionan de manera muy diferente y se utilizan en diferentes formas , aunque hay algunas similitudes entre ellos . Idioma
clases abstractas e interfaces permiten código diferente a utilizar. Por ejemplo , una clase abstracta puede contener clases concretas , mientras que una interfaz puede contener clases abstractas . Una clase abstracta es también más fluido que la interfaz y puede contener los campos que no son estáticas o definitivas, mientras que una interfaz no puede. Además , una clase abstracta hereda automáticamente una clase de objeto , lo que significa que va a incluir métodos como " clone ( )" y "es igual a () ", mientras que una interfaz no puede incluir estos métodos.
Métodos implementados
métodos de una clase abstracta se pueden definir con una variedad de parámetros de visibilidad , incluso públicos, protegidos , privados o ninguno. Una interfaz sólo puede ser visiblemente público. Esto significa que todos los miembros de una interfaz son públicos por defecto, mientras que los miembros de una clase abstracta puede incluir miembros no públicos o métodos.
Rendimiento
en términos generales , las interfaces funcionan un poco más lento que las clases abstractas porque introducen una nueva clase para cada método que se implementa , y puede tomar más tiempo para una interfaz para localizar el método correcto de cada clase . Una clase abstracta , por otro lado , se puede aplicar un método a varias clases a la vez , y por lo tanto lleva a cabo más rápido . Sin embargo , la mayoría de JVM ( Java Virtual Machines ) de de 2011 para compensar las diferencias , y estas diferencias de rendimiento apenas se notó más.
Uso
Una interfaz debe utilizarse cuando la secuencia de comandos le pedirá proporcionar la implementación para todas sus métodos. Las interfaces pueden construir todas las clases de nuevo desde cero de una manera sistemática. Las clases abstractas deben ser utilizados cuando se tiene una aplicación parcial de la secuencia de comandos , pero no es totalmente completa . Deja estas implementaciones incompletas como "abstracto " y permitir que un servidor para interpretarlos.