abstract-classes-vs-interface-in-java

Clase Abstracta Vs. Interfaz en Java: Explicación con Ejemplos

Publicado por
Comparte en redes sociales


Las clases e interfaces abstractas se utilizan para la abstracción en Java. La abstracción en la programación orientada a objetos se refiere a ocultar los detalles de implementación de los usuarios finales.

En resumen, puede saber cuáles son las funciones, pero no puede saber cómo se implementaron.

Examinemos cada uno de ellos y tratemos de entender por qué se usan.

Clase abstracta

Una clase que no se puede instanciar como un objeto y que puede o no contener métodos abstractos se denomina clase abstracta en Java. Un método abstracto es un método que no tiene un cuerpo de implementación cuando se declara.

ejemplo de clase abstracta
Ejemplo de clase abstracta GraphicObject – Oráculo

Puede crear una clase abstracta especificando el abstract palabra clave antes class palabra clave.

abstract class abstractClass {
    void run() {
        System.out.println("ran");
    }
}

Una clase abstracta puede ser extendida por otras clases. En otras palabras, también se puede subclasificar.

abstract class AbstractClass {
    void run() {
        System.out.println("ran");
    }
}

class ExtendingAbstractClass extends AbstractClass {
    void newMethod() {
        System.out.println("new");
    }

    @Override
    void run() {
        System.out.println("override");
    }
}

Las clases abstractas se utilizan para implementar métodos comunes entre varias clases que amplían una clase abstracta determinada. Además, la capacidad de definir métodos abstractos dentro de clases abstractas los hace increíblemente útiles para clases que tienen métodos similares pero con diferentes implementaciones. Tomemos un ejemplo.

Considere un automóvil que tiene ciertas características, como arranque, parada, marcha atrás, etc. Estas características son comunes a todos los tipos de automóviles.

Pero, ¿qué pasa con las funciones de automatización como la conducción autónoma? La implementación de estas características puede diferir entre los tipos de automóviles. Veamos cómo puede crear un programa orientado a objetos relacionado con él.

Leer también  6 Meilleur outil de sauvegarde GitHub pour la protection des données

Primero, crea un Car clase que se ampliará con varias clases de diferentes tipos de coches.

abstract class Car {
    void start() {
        // implementation
        System.out.println("runs car");
    }

    void stop() {
        // implementation
        System.out.println("engine stops");
    }

    void reverse() {
        // implementation
        System.out.println("reverse mode enabled");
    }

    abstract void selfDrive();
}

El método start(), stop()Y reverse() son métodos comunes a todos los coches. Por lo tanto, su implementación ya está definida en la propia clase Car. Sin embargo, un determinado tipo de automóvil puede tener diferentes implementaciones del modo de conducción autónoma. Y así puedes establecer selfDrive() como un método abstracto e implementarlo de diferentes maneras en diferentes clases de diferentes tipos de autos.

class CarTypeA extends Car {
    @Override
    void start() {
        super.start();
    }

    @Override
    void stop() {
        super.stop();
    }

    @Override
    void reverse() {
        super.reverse();
    }

    void selfDrive() {
        // custom implementation
        System.out.println("Type A self driving mode enabled");
    }
}
class CarTypeB extends Car {
    // ...all similar methods

    void selfDrive() {
        // custom implementation
        // different implementation than CarTypeB
        System.out.println("Type B self driving mode enabled");
    }
}

Es importante tener en cuenta que, si una subclase no implementa todos los métodos abstractos definidos en la clase abstracta, debe declararse como una clase abstracta.

Interfaz

Una interfaz es una forma de decirle a una clase qué métodos debe implementar. Por ejemplo, si considera el ejemplo de un automóvil, tiene algunas funciones básicas. Puede arrancar, moverse y detenerse. Estas funciones son comunes a todos los coches.

Entonces, si implementa una interfaz de un automóvil en una clase, debe implementar todos los métodos para que el automóvil funcione de manera adecuada y segura.

Al igual que las clases abstractas, no podemos instanciar o crear objetos desde una interfaz. Se puede considerar como una clase completamente abstracta porque contiene solo métodos abstractos, es decir, métodos sin un cuerpo de implementación.

Leer también  Tulip de Canadá lanza Tulip Pay para transacciones minoristas en persona

Puede crear una interfaz usando el interface palabra clave.

interface CAR {
    void start();
    void stop();
    void move();
}

Implementar una interfaz usando el implements palabra clave al definir una clase.

class CarTypeB implements CAR {
    public void start() {
        System.out.println("started");
    }

    public void stop() {
        System.out.println("stopped");
    }

    public void move() {
        System.out.println("running");
    }
}

Semejanza

Ninguna instanciación como objeto es lo único que tienen en común las clases abstractas y las interfaces.

diferencias

Clase abstracta Interfaz
Herencia e implementación Una clase solo puede heredar una clase abstracta. Una clase puede implementar múltiples interfaces.
Tipos de variables Puede tener variables finales, no finales, estáticas y no estáticas. Solo puede tener variables estáticas y finales.
Tipos de métodos Puede contener métodos abstractos y no abstractos. Solo puede contener métodos abstractos, pero los métodos estáticos son una excepción.
Modificadores de acceso Una clase abstracta puede tener un modificador de acceso. Las firmas de métodos definidas en la interfaz son públicas de forma predeterminada. Una interfaz no tiene modificador de acceso.
Constructores y Destructores Puede declarar constructores y destructores. No puede declarar constructores o destructores.
Velocidad Rápido Lento
Diferencias entre clase abstracta e interfaz

¿Cuándo usar la clase abstracta y la interfaz?

Use clases abstractas cuando:

  • Desea compartir métodos y campos comunes entre varias clases.
  • declarando non-static Y non-final campos para modificar el estado del objeto al que están vinculados.

Puede utilizar interfaces cuando:

  • Desea definir el comportamiento de una clase que implementa la interfaz, pero no le importa cómo se implementa.
  • Desea asegurarse de que una clase implemente todos los métodos para que funcionen correctamente.

Ultimas palabras

Las interfaces se utilizan principalmente para crear API porque pueden proporcionar una estructura para implementar la funcionalidad sin preocuparse por la implementación real.

Leer también  Las últimas empresas emergentes de IA recaudarán millones en ronda de financiación

Las clases abstractas se utilizan normalmente para compartir métodos abstractos y no abstractos comunes entre varias clases, lo que amplía la clase abstracta para hacer que el código sea más reutilizable.

Obtenga más información sobre Java con estos cursos en línea para Java. ¿Preparándose para una entrevista en Java? Aquí hay algunas preguntas de la entrevista de programación orientada a objetos.



Source link

Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.

Direcciones de Billetera:

- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS 

- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe 

- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f

- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx 

También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:

-Twitter

- Telegram

Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones

Dejar un comentario

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