java interface abstract class tutorial with examples
Este video tutorial explica qué es la interfaz Java, cómo implementarla y la herencia múltiple usando interfaces en Java con ejemplos:
En uno de nuestros tutoriales anteriores, discutimos la abstracción en detalle. Allí discutimos clases abstractas y métodos abstractos. Sabemos que las clases abstractas proporcionan abstracción ya que también podemos tener algún método no abstracto en la clase abstracta.
La función que proporciona una abstracción del 100% en Java se llama ' Interfaz ”. En este tutorial, discutiremos interfaces en Java.
=> Eche un vistazo a la guía para principiantes de Java aquí.
Lo que vas a aprender:
- Tutoriales en video sobre interfaces y clases abstractas
- ¿Qué es una interfaz en Java?
- Varias interfaces en Java
- Conclusión
Tutoriales en video sobre interfaces y clases abstractas
Introducción a las interfaces y clases abstractas en Java - Parte 1:
Descripción general de interfaces y clases abstractas en Java - Parte 2:
Abstracción y herencia en Java:
¿Qué es una interfaz en Java?
Una interfaz en Java se define como un tipo abstracto que especifica el comportamiento de la clase. Una interfaz es una especie de protocolo que establece reglas sobre cómo debe comportarse una clase en particular.
Una interfaz en Java puede contener métodos abstractos y constantes estáticas. De forma predeterminada, todos los métodos de la interfaz son públicos y abstractos.
A continuación se ofrece un ejemplo sencillo de una interfaz en Java.
|_+_|El ejemplo anterior define una 'forma' de interfaz que tiene una variable estática y un método abstracto 'calculateArea ()'.
Una interfaz es una entidad que solo tiene métodos abstractos como cuerpo. También puede tener variables finales estáticas.
Entonces, al igual que la clase, una interfaz también puede tener métodos y variables, pero tenga en cuenta que los métodos son abstractos (sin implementación) y las variables son estáticas.
A continuación se enumeran algunas propiedades que deben tenerse en cuenta relacionadas con las interfaces:
- Las interfaces son planos de una clase. Le dicen a la clase qué hacer a través de sus métodos.
- Una interfaz especifica métodos abstractos y las clases que implementan esa interfaz también deben implementar esos métodos.
- Si una clase que implementa la interfaz no define todos los métodos de la interfaz, esa clase se convierte en una clase abstracta.
La sintaxis general de la declaración de interfaz se proporciona a continuación.
|_+_|Como se muestra en la declaración anterior, usamos una palabra clave Java 'interfaz' que indica que estamos declarando una interfaz ahora.
preguntas y respuestas de la entrevista de prueba de aplicaciones móviles
Una palabra clave 'interfaz' va seguida de interface_name y luego las llaves de apertura. Luego tenemos varias declaraciones de métodos abstractos, declaración de campos estáticos, etc. Finalmente, cerramos las llaves.
Por ejemplo,si queremos declarar una interfaz 'TestInterface' con dos métodos, es decir, method_one y method_two, entonces la declaración de TestInterface será la siguiente:
|_+_|Usos de la interfaz en Java
- Las interfaces en Java proporcionan un 100% de abstracción, ya que solo pueden tener métodos abstractos.
- Usando interfaces, podemos lograr múltiples herencias en Java que no es posible usando clases.
- Para lograr un acoplamiento suelto, se puede utilizar una interfaz.
Cómo implementar una interfaz en Java
Una vez declarada la interfaz, podemos usarla en una clase. usando la palabra clave 'implements' en la declaración de clase.
Esta palabra clave 'implementa' aparece después del nombre de la clase como se muestra a continuación:
|_+_|Implementar una interfaz es lo mismo que firmar un contrato. Por lo tanto, una clase que implementa una interfaz significa que ha firmado un contrato y ha acordado implementar los métodos abstractos de la interfaz o, en otras palabras, realizar el comportamiento especificado por la interfaz.
Si la clase que implementa la interfaz no implementa el comportamiento exacto especificado en la interfaz, entonces la clase debe declararse como abstracta.
Ejemplo de implementación de interfaz
A continuación se muestra un ejemplo simple de una interfaz en Java.
|_+_|Producción:
El programa anterior demuestra el ejemplo simple de interfaces en Java. Aquí, declaramos una interfaz llamada Polygon_Shape y luego la clase Rectangle la implementa.
Convención de nomenclatura de interfaces en Java
Las convenciones de nomenclatura de Java son las pautas de nomenclatura que debemos seguir como programadores para poder producir código coherente legible. Java utiliza notaciones 'TitleCase' para las clases de nombres y las interfaces. Utiliza notaciones 'CamelCase' para variables, métodos, etc.
En lo que respecta a la interfaz, el nombre de la interfaz está en el caso del título con la primera letra de cada palabra del nombre de la interfaz en mayúscula. Los nombres de interfaz se seleccionan de manera que normalmente sean adjetivos. Pero cuando las interfaces representan la familia de clases como mapa o lista, entonces se pueden nombrar con nombres.
A continuación se ofrecen algunos ejemplos de nombres de interfaz válidos:
|_+_|Constructor de interfaz
La siguiente pregunta es si una interfaz tiene un constructor.
Sabemos que necesitamos objetos para invocar métodos. Para crear objetos necesitamos constructores. Pero en el caso de Interfaces en Java, los métodos no se implementan.
Los métodos de las interfaces son todos abstractos. Por lo tanto, no tiene sentido llamar a estos métodos desde la interfaz. En segundo lugar, como las interfaces son abstractas por defecto, no podemos crear objetos de la interfaz. Por lo tanto, no necesitamos constructores para Interface.
Métodos de interfaz
En esta sección, discutiremos cómo declarar métodos de interfaz. Por regla general, una interfaz solo puede tener métodos públicos o, de forma predeterminada, los métodos de interfaz son públicos. No se permite utilizar ningún otro modificador de acceso dentro de la interfaz.
Entonces, ya sea que lo declaremos explícitamente o no, todos los métodos en la interfaz son abstractos por defecto con visibilidad pública.
Por lo tanto, si void printMethod () es el prototipo que pretendemos declarar en una interfaz, las siguientes declaraciones son las mismas.
|_+_|Tenga en cuenta que no podemos usar los siguientes modificadores dentro de la interfaz para los métodos de la interfaz.
- final
- estático
- Privado
- protegido
- sincronizado
- nativo
- estrictofp
Ahora implementemos un programa Java para demostrar la visibilidad del método de la interfaz.
|_+_|Producción:
Como ya se mencionó, de forma predeterminada, los métodos de interfaz son públicos. Por lo tanto, cuando no especificamos ningún modificador de acceso para el método de interfaz, entonces es público como en el programa anterior.
Supongamos que cambiamos la declaración del método de interfaz en el programa anterior de la siguiente manera:
printMethod vacío privado ();
Entonces esto significa que especificamos el método de interfaz printMethod () como privado. Cuando compilamos el programa, obtenemos el siguiente error del compilador.
error: modificador privado no permitido aquí
printMethod vacío privado ();
El segundo caso que podemos probar es cambiando el modificador del método implementado en la clase TestClass de público a privado. Ahora el modificador predeterminado de la clase es privado. Así que simplemente eliminamos la palabra clave pública del prototipo del método en la clase de la siguiente manera:
|_+_|Ahora, si compilamos el programa, obtenemos el siguiente error.
error: printMethod () en TestClass no puede implementar printMethod () en TestInterface
printMethod vacío ()
^
intentar asignar privilegios de acceso más débiles; era público
Por lo tanto, el punto que debe tenerse en cuenta aquí es que no podemos cambiar el modificador de acceso del método implementado de la interfaz a ningún otro modificador de acceso. Como los métodos de interfaz son públicos por defecto, cuando son implementados por clases que implementan interfaces, estos métodos también deberían ser públicos.
Campos de interfaz en Java
Los campos o variables declarados en una interfaz son públicos, estáticos y finales por defecto. Esto significa que una vez declarado su valor no se puede cambiar.
Tenga en cuenta que si los campos de la interfaz se definen sin especificar ninguno de estos modificadores, los compiladores de Java asumen estos modificadores. Por ejemplo, si no especificamos un modificador público al declarar el campo en la interfaz, entonces se asume por defecto.
Cuando una clase implementa una interfaz, proporciona una implementación para todos los métodos abstractos de la interfaz. De manera similar, todos los campos declarados en la interfaz también son heredados por la clase que implementa la interfaz. Por tanto, una copia del campo de interfaz está presente en la clase de implementación.
Ahora todos los campos de la interfaz son estáticos por defecto. Por lo tanto, podemos acceder a ellos usando el nombre de la interfaz directamente de la misma manera que accedemos a los campos estáticos de la clase usando el nombre de la clase y no el objeto.
El siguiente programa Java de ejemplo muestra cómo podemos acceder a los campos de la interfaz.
|_+_|Producción:
Como se muestra en el programa anterior, se puede acceder a los campos de la interfaz utilizando un nombre de interfaz seguido de un operador de punto (.) Y luego la variable real o el nombre del campo.
La interfaz genérica en Java
Hemos hablado de los genéricos de Java en nuestros tutoriales anteriores. Además de tener clases, métodos, etc. genéricos, también podemos tener interfaces genéricas. Las interfaces genéricas se pueden especificar de manera similar en la forma en que especificamos clases genéricas.
Las interfaces genéricas se declaran con parámetros de tipo que las hacen independientes de un tipo de datos.
La sintaxis general de la interfaz genérica es la siguiente:
comandos unix entrevista preguntas y respuestas|_+_|
Ahora, si queremos usar la interfaz genérica anterior en una clase, entonces podemos tener la definición de clase como se muestra a continuación:
|_+_|Tenga en cuenta que tenemos que especificar la misma lista de parámetros con la clase que con la interfaz.
El siguiente programa Java demuestra las interfaces genéricas en Java.
|_+_|Producción:
El programa anterior implementa una interfaz que contiene un método para encontrar el valor mínimo en la matriz. Esta es una interfaz genérica. La clase implementa esta interfaz y anula el método. En el método principal, llamamos al método de interfaz para encontrar el valor mínimo en un número entero y una matriz de caracteres.
Varias interfaces en Java
En nuestro tema de herencia, hemos visto que Java no permite que una clase herede de varias clases, ya que da como resultado una ambigüedad llamada 'Problema del diamante'.
Sin embargo, una clase puede heredar o implementar más de una interfaz. En este caso, se conoce como herencia múltiple. Entonces, aunque no podemos implementar herencia múltiple en Java a través de clases, podemos hacerlo usando interfaces.
El siguiente diagrama muestra la herencia múltiple mediante interfaces. Aquí una clase implementa dos interfaces, es decir, Interface_one e Interface_two.
Tenga en cuenta que cuando una clase implementa las interfaces múltiples, los nombres de las interfaces están separados por comas en la declaración de la clase. Podemos implementar tantas interfaces siempre que podamos manejar la complejidad.
El programa Java que muestra múltiples interfaces se muestra a continuación.
|_+_|Producción:
herramientas de prueba de servicios web de código abierto
Como se muestra arriba, implementamos dos interfaces. Luego anulamos sus respectivos métodos y los llamamos en el método principal.
La herencia múltiple en Java proporciona todos los beneficios que proporciona la herencia múltiple en C ++. Pero a diferencia de la herencia múltiple que usa clases, la herencia múltiple que usa interfaces no tiene ninguna ambigüedad.
Herencia de la interfaz en Java: la interfaz amplía la interfaz
Cuando una clase implementa una interfaz, se hace usando el ' implementos 'Palabra clave. En Java, una interfaz puede heredar otra interfaz. Esto se hace usando el ' extiende 'Palabra clave. Cuando una interfaz extiende otra interfaz, se llama ' Herencia de interfaz ”En Java.
El programa Java para implementar la herencia de interfaces se muestra a continuación.
|_+_|Producción:
Hemos modificado el mismo programa que usamos para la herencia múltiple usando interfaces para demostrar la herencia de interfaces. Aquí, ampliamos Interface_one en Interface_two y luego implementamos Interface_two en una clase. Como las interfaces se heredan, ambos métodos están disponibles para anularlos.
Preguntas frecuentes
P # 1) ¿Cuál es el uso de la interfaz en Java?
Responder: Una interfaz en Java es una entidad que se utiliza para lograr una abstracción del 100%. Solo puede contener métodos abstractos que pueden ser anulados por la clase que implementa la interfaz.
En cierto modo, la interfaz actúa como un modelo de la clase en la que le proporciona a la clase los prototipos de métodos abstractos y las constantes estáticas y luego la clase tiene que anular esos métodos implementando la interfaz.
P # 2) ¿Cuáles son las ventajas de la interfaz en Java?
Responder: Algunas de las ventajas de Interface son las siguientes:
- La interfaz actúa como un modelo de la clase.
- La interfaz proporciona un 100% de abstracción en Java, ya que tiene todos los métodos abstractos.
- Las interfaces se pueden utilizar para lograr una herencia múltiple en Java. Java no permite heredar de más de una clase, pero una clase puede implementar múltiples interfaces.
# 3) ¿Puede una interfaz tener métodos?
Responder: Las interfaces pueden tener prototipos de métodos y constantes estáticas y finales. Pero a partir de Java 8, las interfaces pueden contener métodos estáticos y predeterminados.
P # 4) ¿Podemos declarar la interfaz como final?
Responder: No. Si declaramos una interfaz como final, la clase no podrá implementarla. Sin ser implementada por ninguna clase, la interfaz no tendrá ningún propósito.
Más sobre interfaces
Las interfaces son planos como clase, pero solo tendrán la declaración del método. No tendrá ningún método de implementación. Todos los métodos de la interfaz son abstractos públicos por defecto. La interfaz Java 1.8 puede tener métodos estáticos y predeterminados.
Las interfaces se utilizan principalmente en API.
Por ejemplo: Considere que está diseñando el motor de un vehículo.
Cuando haya terminado con la parte del hardware, querrá que algunas de las funcionalidades del software sean implementadas por un cliente que esté usando su motor. Entonces, en ese caso, puede definir las funcionalidades de su motor en una interfaz.
|_+_|Reglas a seguir para la interfaz
- La clase que está implementando la interfaz debe implementar todos los métodos en la interfaz.
- Una interfaz puede contener variables finales.
Aquí, la clase Vehículo es la subclase que implementa la interfaz del motor.
¿Qué son las clases abstractas?
Una clase abstracta es como una clase pero tendrá métodos abstractos y métodos concretos. Los métodos abstractos no tienen implementación. Solo tendrá la declaración del método.
Reglas a seguir para la clase abstracta
- No se pueden crear instancias de la clase abstracta.
- La clase secundaria que amplía la clase abstracta debe implementar todos los métodos abstractos de la clase principal o la clase secundaria debe declararse como una clase abstracta.
Cuando desee diseñar una implementación parcial, puede optar por una clase abstracta.
Ejemplo de programa de clase abstracta:
EmployeeDetails.java
|_+_|
La clase que va a ampliar la clase abstracta.
HR.java
|_+_|
Puntos clave a tener en cuenta:
- En Interfaces, todos los métodos no tendrán implementación de métodos.
- La clase que está implementando la interfaz debe implementar todos los métodos en esa interfaz en particular.
- Las clases abstractas pueden tener métodos abstractos así como métodos concretos normales. Los métodos abstractos no tienen implementación.
- La clase que está ampliando la clase abstracta debe tener la implementación para todos los métodos abstractos en la clase abstracta.
- Si la subclase no tiene suficiente información para implementar los métodos abstractos, entonces la subclase debe declararse como una clase abstracta.
Conclusión
En este tutorial, hemos presentado los conceptos básicos de interfaces en Java. Hemos discutido la definición de interfaz, junto con la necesidad de interfaces. Exploramos su sintaxis y definición básicas. Luego, discutimos cómo usar interfaces para las que usamos la palabra clave 'implements'.
Aprendimos a usar múltiples interfaces y la herencia de interfaces en Java. Usando múltiples interfaces podemos implementar herencia múltiple en Java. La herencia de interfaz es cuando una interfaz extiende otra interfaz.
=> Visite aquí para ver la serie de formación de Java para todos
Lectura recomendada
- OOP Java: Introducción a la programación orientada a objetos en Java
- Interfaces comparables y comparativas en Java
- Mejoras en la interfaz en Java 8: interfaz funcional de Java
- Tutorial de interfaz de mapa Java con implementación y ejemplos
- Interfaz ListIterator en Java con ejemplos
- Interfaz de marcador en Java: serializable y clonable
- Establecer interfaz en Java: Tutorial de conjunto de Java con ejemplos
- Tutorial de reflexión de Java con ejemplos