Найти тему
JavaExplorers

Абстракция

Абстракция - это процесс выделения общих характеристик и отличительных признаков объектов и явлений, а также скрытие деталей реализации, которые не являются существенными для восприятия объекта. В объектно-ориентированном программировании абстракция используется для создания абстрактных классов и интерфейсов, которые определяют только общее поведение объектов, не вдаваясь в детали их реализации.

Абстрактный класс - это класс, который не может быть инстанцирован (т.е. создан объект класса), и предназначен для наследования другими классами. Он содержит хотя бы один абстрактный метод - метод без реализации, который должен быть определен в подклассе.

Примером абстракции может быть класс "Фигура", который описывает свойства и методы, общие для всех фигур. Конкретные типы фигур, такие как квадрат или круг, могут наследоваться от этого класса и добавлять свои уникальные свойства и методы.

Вот пример класса "Фигура":

abstract class Shape {
String color;

public Shape(String color) {
this.color = color;
}

public abstract double getArea();

public abstract double getPerimeter();
}

Этот класс содержит свойства цвета и абстрактные методы getArea() и getPerimeter(). Класс объявлен абстрактным, потому что он содержит хотя бы один абстрактный метод. Абстрактные методы не имеют реализации и должны быть реализованы в подклассах.

Теперь давайте создадим два конкретных подкласса, которые наследуются от класса Shape: Rectangle и Circle.

class Rectangle extends Shape {
double length;
double width;

public Rectangle(String color, double length, double width) {
super(color);
this.length = length;
this.width = width;
}

public double getArea() {
return length * width;
}

public double getPerimeter() {
return 2 * (length + width);
}
}

class Circle extends Shape {
double radius;

public Circle(String color, double radius) {
super(color);
this.radius = radius;
}

public double getArea() {
return Math.PI * radius * radius;
}

public double getPerimeter() {
return 2 * Math.PI * radius;
}
}

Оба класса реализуют методы getArea() и getPerimeter(), но реализация этих методов различается для каждого класса.

Теперь мы можем создать экземпляры этих классов и вызвать их методы:

Rectangle rect = new Rectangle("red", 5, 10);
Circle circle = new Circle("blue", 2.5);

System.out.println(rect.getArea());
System.out.println(circle.getPerimeter());

Таким образом, абстракция позволяет создавать общие классы и методы, которые могут быть использованы повторно, и дает возможность конкретным классам реализовывать свою собственную логику.

Аналог желудочного сока Бальзам Болотова для улучшения ЖКТ и жизненной силы.