Extiende vs implementa en Java

La herencia es un pilar importante de OOP (Programación Orientada a Objetos) . Es el mecanismo en Java por el cual una clase puede heredar las características (campos y métodos) de otra clase. Hay dos palabras clave principales, «extiende» e «implementa», que se utilizan en Java para la herencia. En este artículo, se discute la diferencia entre extensiones e implementos.

Antes de entrar en las diferencias, primero comprendamos en qué escenarios se usa cada una de las palabras clave.

Extends: en Java, la palabra clave extends se usa para indicar que la clase que se está definiendo se deriva de la clase base usando la herencia. Básicamente, la palabra clave extends se usa para extender la funcionalidad de la clase principal a la subclase. En Java, las herencias múltiples no están permitidas debido a la ambigüedad. Por lo tanto, una clase puede extender solo una clase para evitar la ambigüedad.

Ejemplo:

class One {
    public void methodOne()
    {
  
        // Some Functionality
    }
}
  
class Two extends One {
  
    public static void main(String args[])
    {
        Two t = new Two();
  
        // Calls the method one
        // of the above class
        t.methodOne();
    }
}

Implements: en Java, la palabra clave implements se usa para implementar una interfaz . Una interfaz es un tipo especial de clase que implementa una abstracción completa y solo contiene métodos abstractos . Para acceder a los métodos de la interfaz, la interfaz debe ser «implementada» por otra clase con la palabra clave implements y los métodos deben implementarse en la clase que hereda las propiedades de la interfaz. Dado que una interfaz no tiene la implementación de los métodos, una clase puede implementar cualquier número de interfaces a la vez.

Ejemplo

// Defining an interface
interface One {
    public void methodOne();
}
  
// Defining the second interface
interface Two {
    public void methodTwo();
}
  
// Implementing the two interfaces
class Three implements One, Two {
    public void methodOne()
    {
  
        // Implementation of the method
    }
  
    public void methodTwo()
    {
  
        // Implementation of the method
    }
}

Nota: una clase puede extender una clase y puede implementar cualquier cantidad de interfaces simultáneamente.

Ejemplo

// Defining the interface
interface One {
  
    // Abstract method
    void methodOne();
}
  
// Defining a class
class Two {
  
    // Defining a method
    public void methodTwo()
    {
    }
}
  
// Class which extends the class Two
// and implements the interface One
class Three extends Two implements One {
  
    public void methodOne()
    {
  
        // Implementation of the method
    }
}

Nota: una interfaz puede extender cualquier número de interfaces a la vez.

Ejemplo:

// Defining the interface One
interface One {
    void methodOne();
}
  
// Defining the interface Two
interface Two {
    void methodTwo();
}
  
// Interface extending both the
// defined interfaces
interface Three extends One, Two {
}

La siguiente tabla explica la diferencia entre las extensiones y la interfaz:

S. No. se extiende Implementos
1. Al usar la palabra clave «extiende», una clase puede heredar otra clase, o una interfaz puede heredar otras interfaces Al usar la palabra clave «implementos», una clase puede implementar una interfaz
2. No es obligatorio que la subclase que extiende una superclase anule todos los métodos en una superclase. Es obligatorio que la clase que implementa una interfaz tenga que implementar todos los métodos de esa interfaz.
3. Solo una superclase puede ser extendida por una clase. Una clase puede implementar cualquier número de una interfaz a la vez
4. Cualquier número de interfaces se puede ampliar por interfaz. Una interfaz nunca puede implementar ninguna otra interfaz

Publicación traducida automáticamente

Artículo escrito por gauravmoney26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *