Абстрактные классы


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

Например:

abstract class abstractClass { 
    abstract void abstractMethod(); 
    void concreteMethod() { // concrete methods are still allowed in abstract classes 
        System.out.println("This is a concrete method."); 
    } 
}

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

Абстрактные классы могут содержать поля , которые не являются finalи staticи могут содержать реализованные методы , как хорошо , но интерфейсы не могут. Абстрактные классы только с абстрактными методами следует определять как интерфейсы.

Когда абстрактный класс реализует интерфейс, не все методы интерфейса должны быть реализованы, если класс не является абстрактным, должны быть реализованы все методы интерфейса.

Например:

abstract class X implements Y {
// implements all but one method of Y
}

class XX extends X {
// implements the remaining method in Y
}

Абстрактные классы могут иметь staticполя и staticметоды и работают с обычными классами.

Упражнение

Создайте подкласс абстрактного класса и реализуйте абстрактный метод.