Это только заголовок метода.
Что это такое, так это контракт между суперклассом и подклассом.
Как суперкласс, я диктую, что должен реализовывать подкласс.
Чтобы сделать это, вы помещаете ключевое слово abstract и затем заголовок метода с типом возврата и параметрами.
Вам также не нужно устанавливать видимость метода – публичный он или приватный, потому что вы решите это в подклассе.
Как только у вас появятся абстрактные методы в определении класса, значит вы создали абстрактный класс.
Теперь, если у вас есть ключевое слово abstract где угодно, внутри этого класса, вы должны добавить слово abstract в заголовок класса.
Теперь, когда вы используете абстрактный класс и когда вы используете интерфейс?
В конечном счете, абстрактный класс – это просто обычный суперкласс, к которому вы добавляете некоторое поведение.
Это похоже на добавление интерфейса к существующему суперклассу.
Итак, вы используете абстрактный класс, когда вам нужно совместно использовать код и гарантировать поведение в близко связанных классах.
Так как абстрактный класс объявляет общую функциональность для семейства связанных классов.
Вы также используете абстрактный класс, если у вас есть специфические подклассы, которые должны расширять общие классы.
Вы будете использовать интерфейс, когда вы хотите гарантировать поведение несвязанные классов.
С помощью интерфейсов вы также можете использовать дополнительное наследование, если у вас уже есть расширение класса и вы уже использовали ваше основное наследование.