В этой статье анализируется разница между интерфейсами и абстрактными классами в изучении Java, что имеет решающее значение для начинающих, чтобы глубже изучить и точно понять концепции программирования на Java. Подробности следующие:
Новички в Java часто задают такие вопросы: В чем разница между интерфейсами и абстрактными классами? На каком основании вы предпочитаете использовать интерфейсы и абстрактные классы?
Понятия интерфейсов и абстрактных классов различны. Интерфейс — это абстракция действий, а абстрактный класс — абстракция источника.
Абстрактный класс представляет, что представляет собой этот объект. Интерфейс представляет, что может делать этот объект. Например, мужчины и женщины, эти два класса (если они классы...), их абстрактный класс — люди. Объясните, что все они люди.
Люди могут есть, и собаки тоже могут есть. Вы можете определить «еду» как интерфейс, а затем позволить этим классам реализовать его.
Поэтому в языках высокого уровня класс может наследовать только один класс (абстрактный класс) (так же, как человек не может быть живым и неживым существом одновременно), но может реализовывать несколько интерфейсов (поедание интерфейса , ходячий интерфейс).
Первый момент. Интерфейс — это вариант абстрактного класса, и все методы интерфейса являются абстрактными. Абстрактный класс — это класс, который объявляет о существовании метода, но не реализует его.
Второй момент. Интерфейсы можно наследовать, а абстрактные классы — нет (Примечание: автор допустил здесь ошибку. Абстрактные классы могут быть унаследованы. Если все подклассы реализуют методы абстрактного класса, этот подкласс не является абстрактным классом; в противном случае один из них не был реализован. Тогда подкласс также является абстрактным классом.
Третий момент. Методы определения интерфейса не могут быть реализованы, тогда как абстрактные классы могут реализовывать некоторые методы.
Четвертый пункт. Базовый тип данных в интерфейсе является статическим, а абстрактное изображение — нет.
Когда вы сосредотачиваетесь на сути вещи, используйте абстрактные классы, когда вы фокусируетесь на операции, используйте интерфейсы;
Функциональность абстрактных классов намного превосходит функциональность интерфейсов, но стоимость определения абстрактных классов высока . Потому что в языках высокого уровня (и с точки зрения реального проектирования) каждый класс может наследовать только один класс. В этом классе необходимо наследовать или записать все общие черты всех его подклассов. Хотя интерфейс будет гораздо слабее по функциям, это всего лишь описание действия. И вы можете реализовать несколько интерфейсов в одном классе одновременно. Сложность будет снижена на этапе проектирования.