Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Абстракция в Java: Мастерство абстрактных классов, методов и практические примеры

Что такое абстракция в Java?

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

В этом уроке вы узнаете:

Понимание абстрактных классов

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

Рассмотрим классическую иерархию Shape, используемую во многих Java-уроках:

Абстракция в Java: Мастерство абстрактных классов, методов и практические примеры

Класс Shape содержит общие атрибуты и сигнатуру метода calculateArea(), в то время как Rectangle, Circle и Triangle предоставляют конкретные реализации. Хотя класс Shape теоретически может быть инстанцирован, это было бы семантически бессмысленно и могло бы привести к ошибкам. Поэтому он объявляется abstract:

abstract class Shape {
    // общий код
}

Что такое абстрактные методы?

Абстрактный метод объявляет сигнатуру метода без предоставления реализации. Он должен быть определен внутри абстрактного класса и переопределен конкретными подклассами. Поскольку абстрактные методы не имеют тела, они не могут быть помечены final или static.

Пример синтаксиса:

abstract public void calculateArea();

В примере Shape каждый подкласс должен реализовать calculateArea() со своей формулой, обеспечивая, что каждая фигура может сообщить свою площадь, сохраняя общий интерфейс нетронутым.

Практический пример кода

abstract class Shape {
    abstract void calculateArea();
}
class Rectangle extends Shape {
    void calculateArea() {
        System.out.println("Area of Rectangle");
    }
    public static void main(String[] args) {
        Shape obj = new Rectangle();
        obj.calculateArea();
    }
}

Ключевые моменты об абстрактных классах

Ключевое слово Final в Java

Модификатор final используется для блокировки класса, метода или переменной, чтобы их нельзя было переопределить или изменить:

Пример: Комбинация Abstract и Final

abstract class Shape {
    final int b = 20;
    public void display() {
        System.out.println("This is display method");
    }
    abstract public void calculateArea();
}
public class Rectangle extends Shape {
    public static void main(String[] args) {
        Rectangle obj = new Rectangle();
        obj.display();
        // obj.b = 200; // Ошибка компиляции: нельзя присвоить final переменной
    }
    @Override
    public void calculateArea() {
        System.out.println("Calculating rectangle area");
    }
}

Раскомментирование реализации calculateArea() устраняет ошибку компиляции, а попытка изменить b демонстрирует неизменность final переменных.

Правила для абстрактных методов

java

  1. Абстрактные классы и методы в C#: практическое руководство
  2. Абстрактные классы и методы в Java: полное руководство
  3. Абстрактные классы в C#: практическое руководство с примерами кода
  4. Метод String.length() в Java: как получить длину строки (пример)
  5. Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
  6. Метод String.contains() в Java: как проверить наличие подстроки — примеры
  7. Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
  8. Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
  9. Чтение файлов в Java с BufferedReader — Практическое руководство с примерами
  10. Алгоритм сортировки вставками в Java: понятный пример и пошаговое руководство