1. Разница между абстрактными классами и интерфейсом
Как новичок в Java, мы всегда чувствуем, что абстрактные классы и интерфейсы похожи и в то же время разные. Но в чем разница, понять трудно, по крайней мере у меня так было.
Интерфейс — это, по сути, контракт для классов, которые его расширяют. В то время как Abstract не совсем такой. Абстрактные классы могут иметь тело для своих методов, которые не помечены как абстрактные. И если эти методы с телом объявлены как общедоступные, они могут быть доступны для других классов в том же пакете.
2. Мы не можем создать экземпляр объекта абстрактного класса.
Мы не сможем создать экземпляр объекта абстрактного класса. Если в приведенном выше примере, если мы попытаемся создать объект абстрактного класса в классе, который его расширяет, мы получим ошибку.
3. Абстрактный класс может иметь переменные-члены и статические переменные.
Абстрактный класс может иметь общедоступные, частные, защищенные, а также статические переменные.
4.Абстрактный класс может реализовать интерфейс и не использовать его методы
Обычно класс, расширяющий интерфейс, всегда должен реализовывать его методы. Но это не относится к абстрактным классам, они могут расширять интерфейс, но не реализовывать его методы.
5. Основной метод
У нас может быть основной метод в абстрактных классах