Поиск по сайту:
Критерий истины не практика, а собственная душа (Авессалом Подводный).

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

24.04.2022
Чему программисты на Java должны научиться в 2021 году

Java предоставляет несколько способов обеспечения абстракции данных, таких как интерфейсы Java и абстрактные классы Java. И интерфейс, и абстрактный класс обеспечивают безопасность, скрывая детали внутренней реализации и показывая/выделяя только необходимые детали. Однако между абстрактными классами и интерфейсами существует множество сходств и различий.

Этот пост поможет вам в перечисленных ниже аспектах интерфейсов Java и абстрактных классов:

  1. Что такое интерфейс Java.
  2. Что такое абстрактный класс Java.
  3. Сравнение на основе сходства.
  4. Абстрактный класс Java против интерфейса Java.

Итак, начнем!

 

Что такое Java-интерфейс

Это шаблон для класса, который содержит некоторые абстрактные методы и статические/финальные переменные. В java интерфейсы предоставляют только объявление метода, а дочерние/реализованные классы предоставляют определение метода.

 

Что такое абстрактный класс Java

Любой класс Java, который имеет хотя бы один абстрактный (только объявление метода) метод, известен как абстрактный класс в Java.

 

Сравнение на основе сходства

Некоторые важные аспекты интерфейсов и абстрактных классов Java перечислены ниже:

  • В java мы не можем создать объект/экземпляр обоих интерфейсов или абстрактных классов.
  • Оба предоставляют пользователю только необходимые данные.
  • Оба обеспечивают абстракцию.
  • Оба могут иметь абстрактные методы/функции.
  • Оба скрывают информацию/детали реализации от пользователей.

 

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

Ключевые слова «abstract» и «interface» используются в java для создания/объявления абстрактных классов и интерфейсов соответственно.

В интерфейсах все члены по умолчанию считаются общедоступными, поэтому нет необходимости указывать модификатор доступа для членов интерфейсов. В то время как в абстрактных классах такого ограничения нет, и, следовательно, любой модификатор доступа может использоваться для членов абстрактных классов, таких как общедоступные, защищенные и т. д.

Читать  Как запустить Java из командной строки в Linux

Основной синтаксис абстрактного класса и интерфейса показан в приведенных ниже фрагментах:

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

public abstract class ClassName{
public abstract void methodName();
}

Интерфейс

public interface InterfaceName{
void methodName();
}

 

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

Интерфейс может иметь только статические члены, тогда как абстрактные классы могут иметь статические и нестатические члены.

Интерфейсы имеют только «конечные» (неизменяемые) члены, в то время как абстрактные классы могут иметь конечные и неконечные члены.

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

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

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

 

Пример

Приведенный ниже пример позволит вам понять, как интерфейсы и абстрактные классы работают в java:

interface FirstInterface {
    void methodOne();
    void methodTwo();
    void methodThree();
}
abstract class AbstractClass implements FirstInterface {
    public void methodThree() {
        System.out.println("Abstract class Implementing methodThree");
    }
}
class NormalClass extends AbstractClass {
    public void methodOne() {
        System.out.println("Implementing methodOne");
    }
    public void methodTwo() {
        System.out.println("Implementing methodTwo");
    }
    public void methodThree() {
        System.out.println("Implementing methodThree");
    }
}
public class InterfaceExample {
    public static void main(String[] args) {
        FirstInterface obj = new ClassThree();
        obj.methodOne();
        obj.methodTwo();
        obj.methodThree();
    }    
}

 

Читать  7 лучших языков программирования для серверной веб-разработки

В этом примере мы создали интерфейс «FirstInterface» , абстрактный класс «AbstractClass» и еще два обычных класса Java и выполнили следующие функции:

  • FirstInterface содержит три абстрактных метода.
  • AbstractClass реализует FirstInterface и переопределяет methodThree ().
  • NormalClass расширяет AbstractClass и переопределяет методы methodOne() и methodTwo() класса FirstInterface.

InterfaceExample — это основной класс, из которого мы создали основной метод и вызвали все методы FirstInterface :

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

 

Вывод подтвердил работу указанной выше Java-программы.

 

Вывод

В Java абстракция может быть достигнута с помощью абстрактных классов и интерфейсов, и оба они не могут быть созданы. Однако между абстрактными классами и интерфейсами существует множество различий. Например, интерфейсы должны иметь все абстрактные методы, а абстрактные классы могут иметь абстрактные и неабстрактные методы; используя интерфейсы, можно достичь множественного наследования, в то время как абстрактные классы не поддерживают множественное наследование и т. д. В этом посте объясняются различные аспекты абстрактных классов и интерфейсов с помощью подходящих примеров.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Razer, ведущий бренд в области игровых технологий, выпустил преемника своей…

Спасибо!

Теперь редакторы в курсе.