in

Abstracción en Java – GeeksforGeeks

gfg 200x200 min

La abstracción de datos es la propiedad en virtud de la cual solo se muestran al usuario los detalles esenciales. Las unidades triviales o no esenciales no se muestran al usuario. Ej: un automóvil se considera un automóvil en lugar de sus componentes individuales.

La abstracción de datos también se puede definir como el proceso de identificar solo las características requeridas de un objeto ignorando los detalles irrelevantes. Las propiedades y comportamientos de un objeto lo diferencian de otros objetos de tipo similar y también ayudan a clasificar / agrupar los objetos.

Considere un ejemplo de la vida real de un hombre que conduce un automóvil. El hombre solo sabe que presionar el acelerador aumentará la velocidad de un automóvil o aplicar los frenos detendrá el automóvil, pero no sabe cómo al presionar el acelerador la velocidad en realidad está aumentando, no conoce el mecanismo interno del motor. automóvil o la implementación del acelerador, frenos, etc.en el automóvil. Eso es la abstracción.

En Java, la abstracción se logra mediante interfaces y clases abstractas. Podemos lograr una abstracción del 100% utilizando interfaces.

Clases abstractas y métodos abstractos:

  1. Una clase abstracta es una clase que se declara con una palabra clave abstracta.
  2. Un método abstracto es un método que se declara sin implementación.
  3. Una clase abstracta puede tener o no todos los métodos abstractos. Algunos de ellos pueden ser métodos concretos.
  4. Un método abstracto definido siempre debe redefinirse en la subclase, por lo que la invalidación es obligatoria O bien hacer que la subclase en sí sea abstracta.
  5. Cualquier clase que contenga uno o más métodos abstractos también debe declararse con una palabra clave abstracta.
  6. No puede haber objeto de una clase abstracta. Es decir, una clase abstracta no se puede instanciar directamente con el nuevo operador.
  7. Una clase abstracta puede tener constructores parametrizados y el constructor predeterminado siempre está presente en una clase abstracta.

Cuándo usar clases abstractas y métodos abstractos con un ejemplo

Hay situaciones en las que querremos definir una superclase que declare la estructura de una abstracción dada sin proporcionar una implementación completa de cada método. Es decir, a veces querremos crear una superclase que solo defina un formulario de generalización que será compartido por todas sus subclases, dejando que cada subclase complete los detalles.

Considere un ejemplo clásico de «forma», tal vez utilizado en un sistema de diseño asistido por computadora o simulación de juego. El tipo base es «forma» y cada forma tiene un color, tamaño, etc. A partir de esto, se derivan (heredan) tipos específicos de formas (círculo, cuadrado, triángulo, etc.), cada una de las cuales puede tener características y comportamientos adicionales. Por ejemplo, ciertas formas se pueden voltear. Algunos comportamientos pueden ser diferentes, como cuando desea calcular el área de una forma. La jerarquía de tipos incorpora tanto las similitudes como las diferencias entre las formas.

Abstract classes and methods Page 1

Java

abstract class Shape {

    String color;

 

    

    abstract double area();

    public abstract String toString();

 

    

    public Shape(String color)

    {

        System.out.println("Shape constructor called");

        this.color = color;

    }

 

    

    public String getColor() { return color; }

}

class Circle extends Shape {

    double radius;

 

    public Circle(String color, double radius)

    {

 

        

        super(color);

        System.out.println("Circle constructor called");

        this.radius = radius;

    }

 

    @Override double area()

    {

        return Math.PI * Math.pow(radius, 2);

    }

 

    @Override public String toString()

    {

        return "Circle color is " + super.getColor()

            + "and area is : " + area();

    }

}

class Rectangle extends Shape {

 

    double length;

    double width;

 

    public Rectangle(String color, double length,

                     double width)

    {

        

        super(color);

        System.out.println("Rectangle constructor called");

        this.length = length;

        this.width = width;

    }

 

    @Override double area() { return length * width; }

 

    @Override public String toString()

    {

        return "Rectangle color is " + super.getColor()

            + "and area is : " + area();

    }

}

public class Test {

    public static void main(String[] args)

    {

        Shape s1 = new Circle("Red", 2.2);

        Shape s2 = new Rectangle("Yellow", 2, 4);

 

        System.out.println(s1.toString());

        System.out.println(s2.toString());

    }

}

Producción
Shape constructor called
Circle constructor called
Shape constructor called
Rectangle constructor called
Circle color is Redand area is : 15.205308443374602
Rectangle color is Yellowand area is : 8.0

Encapsulación vs abstracción de datos

  1. La encapsulación es la ocultación de datos (ocultación de información) mientras que la abstracción es la ocultación detallada (ocultación de la implementación).
  2. Mientras que la encapsulación agrupa datos y métodos que actúan sobre los datos, la abstracción de datos trata de exponer la interfaz al usuario y ocultar los detalles de la implementación.

Ventajas de la abstracción

  1. Reduce la complejidad de ver las cosas.
  2. Evita la duplicación de código y aumenta la reutilización.
  3. Ayuda a aumentar la seguridad de una aplicación o programa, ya que solo se proporcionan detalles importantes al usuario.

Artículos relacionados :

¡Atención lector! No dejes de aprender ahora. Hazte con todo lo importante Fundación Java y conceptos de colecciones con el Curso de Fundamentos de Java y Colecciones de Java a un precio asequible para los estudiantes y prepárese para la industria. Para completar su preparación desde el aprendizaje de un idioma hasta DS Algo y muchos más, consulte Curso completo de preparación para entrevistas.

Deja una respuesta

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

apple touch icon@2

python: elimina una columna de un marco de datos de Pandas

edit

Celsius vs Kelvin – Diferencia y comparación