Встречается на собеседованиях • сегодня

В чем разница между работой с абстрактными классами в разных версиях Java

В Java абстрактные классы существуют с самой первой версии и их концепция остаётся неизменной. Однако в более новых версиях появились дополнительные возможности:

  1. Java 8+: абстрактные классы могут содержать default-методы интерфейсов (если класс реализует интерфейс) и статические методы.
java
abstract class Animal {
    abstract void makeSound();
    
    // Default method from interface
    default void sleep() {
        System.out.println("Zzz");
    }
    
    // Static method
    static boolean isAnimal(Object obj) {
        return obj instanceof Animal;
    }
}
  1. Java 9+: private методы в абстрактных классах (для внутренней логики).

  2. Java 15+: sealed классы (ограничение наследования), которые могут быть абстрактными.

Ключевые отличия от интерфейсов:

  • Абстрактные классы могут иметь состояние (поля)
  • Конструкторы (но нельзя создать экземпляр)
  • Могут содержать реализованные методы
  • Одиночное наследование (в отличие от множественной реализации интерфейсов)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы