Позвольте мне сначала рассказать вам основную концепцию
В языке Java, абстрактный класс и интерфейс являются двумя механизмами, которые поддерживают абстрактные определения класса. Именно из-за существования этих двух механизмов Java дают мощные объектно-ориентированные возможности. Абстрактный класс и интерфейс имеют большое сходство в поддержке абстрактных определений класса и даже могут быть заменены друг другом. Следовательно, многие разработчики, похоже, имеют произвольный выбор для абстрактного класса и интерфейса при определении абстрактного класса. На самом деле, между ними все еще есть большая разница. Выбор их даже отражает, является ли понимание сущности проблемной области и понимания намерения дизайна правильным и разумным.
Абстрактный класс и интерфейс используются на языке Java для выполнения абстрактных классов (абстрактный класс в этой статье не переводится из абстрактного класса, он представляет собой абстрактный орган, а абстрактный класс - это метод, используемый на языке Java для определения абстрактных классов. Пожалуйста, обратите внимание на различие). Так что же такое абстрактный класс? Какие преимущества могут использовать абстрактные классы для нас?
В объектно-ориентированной концепции мы знаем, что все объекты изображены классами, но наоборот нет. Не все классы используются для описания объектов (конкретизируют классы). Если класс не содержит достаточно информации для описания конкретного объекта, такой класс является абстрактным классом. Абстрактные классы часто используются для представления абстрактных концепций, которые мы получаем при анализе и проектировании проблемных областей, и являются абстракциями серии конкретных концепций, которые кажутся разными, но по существу одинаковыми. Например: если мы разрабатываем программное обеспечение для редактирования графики, мы обнаружим, что в проблеме задачи существуют конкретные концепции, такие как круги и треугольники. Они разные, но все они принадлежат концепции формы. Концепция формы не существует в проблемном поле. Это абстрактная концепция. Именно потому, что абстрактные концепции не имеют соответствующих конкретных концепций в проблемной области, которые абстрактные классы, используемые для представления абстрактных концепций, не могут быть созданы.
Виртуальные функции и интерфейсы часто используются в разработке Java. В чем разница между этими двумя?
Аннотация: только один родительский класс может быть унаследован в подклассе
Интерфейс: подклассы могут реализовать несколько интерфейсов
Итак, когда использовать Abstract и когда использовать интерфейс?
Когда подкласс и родительский класс находятся в отношениях, например, азиатский человек, тогда азиатский подкласс может наследовать родительский класс человека.
Например, когда подкласс и родительский класс похожи на отношения, супермен в Америке похож на Супермена. Способности Супермена не все, поэтому они не все атрибуты. Мы не можем приписать суперспособности человеческому родительскому классу. В настоящее время мы можем использовать интерфейс
Пример кода:
Общественный абстрактный класс Человек {public abstract void eat ();} public interface superpower {public void superpower ();} public Class Asiaman расширяет Man {@OverridePublic void eat () {System.out.println («Азиаты едят с рулевыми товарищами»);} public Class AmericansE. {System.out.println ("Американский супермен может летать");}@overridepublic void eat () {system.out.println ("Американское питание с ножом и вилкой");}} public void main (string [] args) {man anasiaman = new asiaman (); Americanansuperman (); Anasiaman.eat (); Anamericansuperman.eat (); anamericansuperman.superpower ();}Результаты работы:
Американцы едят с ножом и вилками, американский супермен может летать азиаты едят с палочками для еды с палочками для еды с палочками
Правильное использование абстрактного и интерфейса полезно для улучшения читаемости кода. Когда люди увидят расширение, они будут знать, что такое. Когда они видят реализацию, они могут знать, какие функции имеют этот класс.