«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Абстрактные классы в Java – разбираем их

Абстрактные классы в Java – разбираем их

Опубликовано 8 ноября 2024 г.
Просматривать:463

Abstract Classes in Java – Breaking It Down

Что такое абстрактный класс?

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

Зачем использовать абстрактные классы?

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

Создание абстрактного класса

Вот как можно создать абстрактный класс под названием Animal:

public abstract class Animal {
    abstract void makeSound();  // Abstract method, no body

    void sleep() {
        System.out.println("This animal sleeps.");
    }
}

В этом примере makeSound() — абстрактный метод, то есть у него еще нет тела. Однако метод Sleep() полностью реализован.

Расширение абстрактного класса

Теперь давайте создадим несколько классов, расширяющих класс Animal:

public class Dog extends Animal {
    void makeSound() {
        System.out.println("The dog barks.");
    }
}

public class Cat extends Animal {
    void makeSound() {
        System.out.println("The cat meows.");
    }
}

Оба класса Dog и Cat должны предоставлять свою собственную версию метода makeSound(), но они наследуют метод Sleep() как есть.

Абстрактный класс и интерфейс

  • Наследование: Класс может расширять только один абстрактный класс, но может реализовывать несколько интерфейсов.
  • Реализация метода: Абстрактный класс может иметь как абстрактные методы (без тела), так и полностью реализованные методы. Интерфейс (до Java 8) может иметь только абстрактные методы.
  • Конструктор: Абстрактные классы могут иметь конструкторы, а интерфейсы — нет.

Частичная реализация

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

public abstract class Bird extends Animal {
    void move() {
        System.out.println("The bird flies.");
    }
}

Теперь любой класс, расширяющий Bird, будет наследовать как метод move(), так и метод Sleep() от Animal, но ему все равно необходимо реализовать makeSound().

Вызов: попробуй сам!

  1. Создайте абстрактный класс Vehicle с помощью абстрактного метода startEngine().
  2. Создайте два класса, Car и Motorcycle, которые расширяют Vehicle и реализуют метод startEngine().
  3. Добавьте общий метод в Vehicle, например stopEngine(), и посмотрите, как он работает в дочерних классах.

Заключение

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

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/be11amer/abstract-classes-in-java-breaking-it-down-1k79?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3