In Desarrollo Última actualizaciónated:
Comparte en:
Software de Jira es la herramienta de gestión de proyectos número uno utilizada por equipos ágiles para planificar, rastrear, lanzar y respaldar software excelente.

Abstract clases e interfaces se utilizan para abstraction en Java. Abstraction en la programación orientada a objetos se refiere a ocultar los detalles de implementación a los usuarios finales.

In abstraction, puedes saber cuáles son las funcionalidades, pero no puedes saber cómo se implementaron.

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

Abstract Clase

Una clase que no puede ser instantánea.ated como un objeto y puede o no tener abstract Los métodos que contiene se denominan abstract clase en Java. Un abstract El método es un método que no tiene un cuerpo de implementación cuando se declara.

puedes crearate an abstract clase especificando el abstract palabra clave antes de la class palabra clave.

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

An abstract La clase puede ampliarse con 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");
    }
}

Abstract Las clases se utilizan para implementar métodos comunes entre múltiples clases que extienden un determinado abstract clase. Además, la capacidad de definir abstract métodos dentro abstract Las clases las hacen increíblemente útiles para clases que tienen métodos similares pero con implementaciones diferentes. Tomemos un ejemplo.

Considere un automóvil que tenga algunas funcionalidades, como arrancar, detener, reverse, etc. Estas funcionalidades son comunes entre todo tipo de coches.

Pero ¿qué pasa con las funcionalidades de automatización como self-¿conduciendo? La implementación de esas funcionalidades puede diferir para diferentes tipos de automóviles. Veamos cómo puedes crearate un programa orientado a objetos related a ello.

En primer lugar, create a Car clase que se ampliará con múltiples clases de diferentes tipos de automóviles.

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 que son comunes en todos los coches. Entonces su implementación ya está definida dentro de la clase Car.self. Sin embargo, un determinado tipo de automóvil puede tener diferentes implementaciones de self-modo de conducción. Y así, puedes definir selfDrive() como una abstract método e implementarlo de diferentes maneras en diferentes clases de diferentes tipos de automóviles.

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 todas abstract métodos definidos en el abstract clase, entonces debería declararse como una abstract clasificarloself.

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 en 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.

Similar a abstract clases, no podemos crear instanciasate o create objetos de una interfaz. Se puede considerar totalmente abstract clase porque contiene sólo abstract métodos, es decir, métodos sin un cuerpo de implementación.

puedes crearate una interfaz utilizando 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");
    }
}

Similitud

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

Diferencias

Abstract ClaseInterfaz
Herencia e ImplementaciónSólo uno abstract La clase puede ser heredada por una clase.Una clase puede implementar múltiples interfaces.
Tipos de variablesPuede tener variables finales, no finales, estáticas y no estáticas.Solo puede tener variables estáticas y finales.
Tipos de métodosPuede contener ambos abstract así como no-abstract métodos.Sólo puede contener abstract métodos, pero los métodos estáticos son una excepción.
Modificadores de accesoAn abstract La clase 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 un modificador de acceso.
Constructores y DestructoresPuede declarar constructores y destructores.No puede declarar constructores o destructores.
VelocidadRápidoLenta
Diferencias entre abstract clase e interfaz

Cuándo usarlos abstract clase e interfaz?

Uso abstract clases cuando:

  • Desea compartir algunos métodos y campos comunes entre varias clases.
  • Declarando non-static y non-final campos para modificar el state 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 la forma en que se implementa.
  • Desea asegurarse de que una clase implemente todos los métodos para funcionar correctamente.

Palabras finales

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

Abstract las clases son genéricasally solía compartir común abstract y noabstract métodos entre múltiples clases, que extienden la abstract clase para hacer el código más reusable.

Aprenda más sobre Java con la ayuda de estos cursos en linea para java. ¿Te estás preparando para una entrevista en Java? Aquí están algunas preguntas de la entrevista sobre Programación Orientada a Objetos.

Comparte en:
  • Murtuza Surti
    Autor
    Ingeniero de software y creador de contenidos

Gracias a nuestros patrocinadores

Más lecturas interesantes sobre el desarrollo

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a su negocio grow.
  • La herramienta de conversión de texto a voz que utiliza IA para generarate Voces realistas parecidas a las humanas.

    Intente Murf AI
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.

    Prueba Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.

    Intente Intruder