CodeGym /Blog Java /Random-ES /Implementos en Java
Autor
Milan Vucic
Programming Tutor at Codementor.io

Implementos en Java

Publicado en el grupo Random-ES
Cuando algunos hablan sobre el paradigma de herencia Java OOP, generalmente se refieren a extender una clase principal con un heredero, una clase secundaria. Sin embargo, cuando te encuentras con la palabra clave Java implements, significa que pasamos a otro nivel de abstracción y comenzamos a trabajar con interfaces en Java. Vamos a hablar sobre qué son las interfaces, para qué sirven, cómo sucede la implementación.

¿Qué es la interfaz y la implementación?

Probablemente haya escuchado la palabra "interfaz" muchas veces. Por ejemplo, una computadora tiene una interfaz de entrada (mouse y teclado), muchos programas tienen interfaces de usuario. En el sentido más amplio, una interfaz es un vínculo entre dos partes que interactúan. Por ejemplo, el mismo teclado o el mismo mando a distancia de la tele. En programación, y en Java en particular, una interfaz es un contrato específico que dice lo que hará la clase que lo implementa. Una interfaz solo define el comportamiento. No dice nada sobre el objeto que lo implementará. Puede declarar una interfaz en Java como esta:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
Aquí hay una sintaxis de implementos en Java:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
Una interfaz describe el comportamiento sin especificarlo. Por ejemplo, un comportamiento como "movimiento" se puede aplicar a diferentes tipos de objetos: una bicicleta, una persona, un automóvil, el agua de un río, etc. El comportamiento de nadar puede ser el comportamiento de un pato, un barco o un pez. Estos objetos no tienen nada en común aparte de que pueden moverse o nadar. Sí, y el propio movimiento con la natación son muy diferentes. Sin embargo, en Java puede crear clases Duck , Boat , Fish y dejar que implementen la capacidad de nadar. Aquí es donde se usa la palabra clave Java Implements .

Implementar palabra clave Ejemplo


public interface Swimmable {
  
   void moveForward();
   void TurnRight();
   void TurnLeft();
  
}
Como puede ver, los métodos en sí no están implementados. Pero declaramos que las clases que implementan esta interfaz deben poder nadar en línea recta, así como girar a la derecha y a la izquierda. Vamos a crear clases que implementarán esta interfaz.

public class Duck implements Swimmable {
//implementing the methods
   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

}

public class Fish implements Swimmable {

   public void moveForward() {
       System.out.println("I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft() {
       System.out.println("I am turning left...");
   }

   public void turnUp(){
       System.out.println("I am turning up...");
   }

   public void turnDown(){
       System.out.println("I am turning down...");
   }

   public void Stop() {
       System.out.println("I am relaxing somewhere under the water surface...");
   }
}
Todas las clases que implementen la interfaz Swimmable , de acuerdo con el contrato, deben poder nadar hacia adelante (implemente el método moveForward() ), así como girar a la derecha y a la izquierda. Se requiere la implementación de estos métodos. Un pato y un pez nadan de manera diferente. Digamos que un pez tiene dos métodos adicionales que implementan su capacidad de nadar hacia arriba y hacia abajo. La interfaz Swimmable no tiene esto. Sin embargo, si creamos un niño de la clase Fish, por ejemplo, Tuna o Salmon, ellos, como todos los "Fish", podrán nadar hacia arriba y hacia abajo.

Múltiples interfaces en Java

Como probablemente ya sepa, Java no admite la herencia múltiple. Eso significa que una clase se puede heredar solo de una superclase. Sin embargo, de alguna manera, aún puede usar "herencia múltiple" en Java, porque una clase puede implementar múltiples interfaces.

To implement multiple interfaces, use the next syntax: 
interface MyFirstInterface {
   public void myMethod();
}
interface MySecondInterface {
   public void myOtherMethod();
}

// MyClass implements both MyFirstInterface and MySecondInterface
class MyClass implements MyFirstInterface, MySecondInterface {
   public void myMethod() {
      //method implementation
   }
   public void myOtherMethod() {
     //method implementation
   }
}

Ejemplo de múltiples interfaces

Recuerda que un pato no solo puede nadar, sino también volar. Escribamos la interfaz de vuelo e implementémosla en nuestro pato.

public interface Flyable {
   double startAge = 0.1;
   void fly();
}

public class Duck implements Swimmable, Flyable {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
Y nuevamente, es importante recordar por qué estamos escribiendo la interfaz. Digamos que si lo implementa un pájaro, un avión, un paracaidista y un diente de león, sus vuelos serán completamente diferentes.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION