Абстракция - это процесс выделения общих характеристик и отличительных признаков объектов и явлений, а также скрытие деталей реализации, которые не являются существенными для восприятия объекта. В объектно-ориентированном программировании абстракция используется для создания абстрактных классов и интерфейсов, которые определяют только общее поведение объектов, не вдаваясь в детали их реализации.
Абстрактный класс - это класс, который не может быть инстанцирован (т.е. создан объект класса), и предназначен для наследования другими классами. Он содержит хотя бы один абстрактный метод - метод без реализации, который должен быть определен в подклассе.
Примером абстракции может быть класс "Фигура", который описывает свойства и методы, общие для всех фигур. Конкретные типы фигур, такие как квадрат или круг, могут наследоваться от этого класса и добавлять свои уникальные свойства и методы.
Вот пример класса "Фигура":
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());
Таким образом, абстракция позволяет создавать общие классы и методы, которые могут быть использованы повторно, и дает возможность конкретным классам реализовывать свою собственную логику.
Аналог желудочного сока Бальзам Болотова для улучшения ЖКТ и жизненной силы.