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

Абстрактные классы и методы в Java: полное руководство

Абстрактные классы и методы в Java

Это руководство предоставляет четкое, пример-ориентированное исследование абстрактных классов и методов в Java и объясняет, как реализована абстракция.

Абстрактный класс в Java

В Java абстрактный класс не может быть инстанцирован. Ключевое слово abstract помечает класс как абстрактный. Например:

// создание абстрактного класса abstract class Language { // поля и методы } ... // попытка создать объект Language // вызывает ошибку Language obj = new Language();

Абстрактный класс может содержать как конкретные (обычные) методы, так и абстрактные. Например:

abstract class Language { // абстрактный метод abstract void method1(); // обычный метод void method2() { System.out.println("This is regular method"); } }

Подробнее об обычных методах см. Java methods.


Абстрактный метод в Java

Абстрактный метод не имеет тела; он объявляет контракт, который подклассы должны выполнить. Он определяется с ключевым словом abstract, например:

abstract void display();

Поскольку у него нет тела, оператор заканчивается точкой с запятой. Если класс объявляет абстрактный метод, сам класс должен быть объявлен абстрактным, иначе компилятор выдаст ошибку:

// ошибка // класс должен быть абстрактным class Language { // абстрактный метод abstract void method1(); }

Пример: Абстрактный класс и метод в Java

Хотя абстрактные классы не могут быть инстанцированы напрямую, конкретные подклассы могут их расширять и использовать их члены. Например:

abstract class Language { public void display() { System.out.println("This is Java Programming"); } } class Main extends Language { public static void main(String[] args) { Main obj = new Main(); obj.display(); } }

Вывод:

This is Java programming

Здесь абстрактный класс Language определяет конкретный метод display(). Подкласс Main наследует этот метод и вызывает его через свой экземпляр.


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

Когда абстрактный класс объявляет абстрактный метод, каждый конкретный подкласс должен предоставить реализацию. Например:

abstract class Animal { abstract void makeSound(); public void eat() { System.out.println("I can eat."); } } class Dog extends Animal { public void makeSound() { System.out.println("Bark bark"); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.makeSound(); d1.eat(); } }

Вывод:

Bark bark I can eat.

Подкласс Dog реализует абстрактный метод makeSound(), наследуя конкретный метод eat().

Примечание: Если Dog не переопределяет makeSound(), он сам должен быть объявлен абстрактным.

Доступ к конструктору абстрактных классов

Абстрактные классы могут определять конструкторы как обычные классы. Подклассы вызывают конструктор суперкласса с помощью super(). Например:

abstract class Animal { Animal() { // логика инициализации } } class Dog extends Animal { Dog() { super(); // дополнительная инициализация } }

Помните, что super() должен быть первым оператором в конструкторе подкласса.


Абстракция в Java

Абстрактные классы и методы — основные инструменты для достижения абстракции в Java. Абстракция скрывает ненужные детали реализации, предоставляя пользователю только существенный интерфейс. Это упрощает сложные системы и повышает гибкость.

Например, тормоз мотоцикла выполняет одну и ту же высокую функцию — замедление — в то время как его внутренний механизм может отличаться у разных моделей.

Пример 3: Абстракция в Java

abstract class MotorBike { abstract void brake(); } class SportsBike extends MotorBike { public void brake() { System.out.println("SportsBike Brake"); } } class MountainBike extends MotorBike { public void brake() { System.out.println("MountainBike Brake"); } } class Main { public static void main(String[] args) { MountainBike m1 = new MountainBike(); m1.brake(); SportsBike s1 = new SportsBike(); s1.brake(); } }

Вывод:

MountainBike Brake SportsBike Brake

Каждый конкретный подкласс предоставляет свою реализацию brake(), иллюстрируя, как абстракция разделяет интерфейс и реализацию.

Примечание: Интерфейсы также можно использовать для достижения абстракции в Java.

Ключевые моменты для запоминания

java

  1. Абстрактные классы и методы в C#: практическое руководство
  2. Переменные и литералы в Java: подробное руководство
  3. Классы и объекты в Java: практическое руководство
  4. Ключевое слово final в Java: переменные, методы и классы
  5. Оператор instanceof в Java: полное руководство с примерами
  6. Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
  7. Статические вложенные классы в Java: использование, отличия и примеры
  8. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  9. Паттерн Singleton в Java: как реализовать и безопасно использовать
  10. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры