Абстрактные классы обычно являются родительскими классами, вы можете думать, что родительский класс имеет переменные класса, которые дочерний класс унаследует от Parent. Абстрактные классы зависят от ситуации, как указано в ответе @Mad Physicist. Вы можете рассмотреть возможность использования абстрактных классов, если любое из этих утверждений применимо к вашей ситуации:
Вы хотите разделить код между несколькими тесно связанными классами. Вы ожидаете, что классы, которые расширяют ваш абстрактный класс, имеют много общих методов или полей или требуют модификаторов доступа, кроме publi c (например, protected и private). Вы хотите объявить незаполненные c или неконечные поля. Это позволяет вам определять методы, которые могут обращаться и изменять состояние объекта, к которому они принадлежат.