В этой статье описывается использование интерфейсов и абстрактных классов в Java. Поделитесь этим для вашей ссылки, следующим образом:
В объектно-ориентированной концепции мы знаем, что все объекты изображены классами, но не все классы используются для описания объектов. Если класс не содержит достаточно информации для описания конкретного объекта, такой класс является абстрактным классом.
Абстрактные классы часто используются для представления абстрактных концепций, которые мы получаем при анализе и проектировании проблемного поля. Это абстракции серии конкретных концепций, которые кажутся разными, но по сути одинаковы. Мы не можем их создавать (не можем придумать конкретную вещь), поэтому мы называем их абстракциями.
Например: когда мы хотим описать «фрукты», это абстракция. Он имеет некоторые общие характеристики, такие как масса и объем (фрукты имеют массу), но в нем не хватает характеристик (яблоки и апельсины являются фруктами, и у них есть свои характеристики). Мы не можем придумать единственную вещь, которая может представлять фрукты (потому что яблоки и апельсины не могут представлять фрукты). Абстрактные классы могут быть использованы для его описания, поэтому абстрактные классы не могут быть созданы. Когда мы используем определенный класс для описания «яблок», этот класс может наследовать абстрактный класс, который описывает «фрукты». Мы все знаем, что «яблоки» - это своего рода «фрукты».
В объектно-ориентированном поле абстрактные классы в основном используются для скрытия типа. Мы можем построить фиксированное абстрактное описание набора поведения, но этот набор поведения может иметь любые возможные методы реализации конкретных конкретных. Это абстрактное описание является абстрактным классом, и этот набор любых возможных конкретных реализаций проявляется как все полученные классы этого абстрактного класса.
Все абстрактные методы в интерфейсах и абстрактных классах не могут быть реализованы в конкретных реализациях, но должны реализовать все абстрактные методы в своих подклассах (должен иметь тело функции, даже если он пуст в {}). Дизайнеры Java могут рассмотреть гибкость абстрактных методов, и каждый подкласс может реализовать абстрактные методы в соответствии с их собственными потребностями.
Определение абстрактного класса заключается в следующем:
Public Abstract Class AbstractClass // В нем есть хотя бы один абстрактный метод {public int t; // Обычный данные члена Общественного абстрактного void Method1 (); // Аннотация Метод, подклассы абстрактного класса должны реализовать абстрактные методы в абстрактном классе в классе Public Abstract Method2 (); Public Void Method3 (); // Неабстрактный метод public int method4 (); public int method4 () {... // абстрактный класс может быть назначен поведение по умолчанию методов неабстрокта методов, то есть конкретная реализация метода} public void method3 () {... // Аннотация классом может быть назначено поведением по умолчанию методов неабстрокта, то есть конкретной реализации метода}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.Определение интерфейса заключается в следующем:
Интерфейс интерфейса публичного интерфейса {статический окончательный финал int i; // В интерфейсе не может быть обычных элементов данных, только статические элементы данных, которые не могут быть изменены. Статические средства Global, окончательные средства не могут быть изменены. Он может быть изменен без статической окончательной модификации, и он будет неявно объявлен как статический и окончательный метод Public void1 (); // Методы в интерфейсе должны быть абстрактными методами, поэтому public void method2 () не нуждается в абстрактной модификации; // Поведение методов по умолчанию не может быть назначено интерфейсу, то есть не может быть конкретной реализации метода}Короче говоря, абстрактные классы представляют собой неполные классы, а интерфейсы являются просто коллекциями объявлений абстрактного метода и статических данных, которые не могут быть изменены, ни один из которых не может быть создан.
В некотором смысле, интерфейс - это особая форма абстрактного класса. На языке Java абстрактные классы представляют собой отношения наследования. Класс может наследовать только один абстрактный класс, в то время как класс может реализовать несколько интерфейсов. Во многих случаях интерфейсы действительно могут заменить абстрактные классы, если вам не нужно намеренно выражать наследование на атрибутах.
Чтобы дополнительно понять, для целей Java представлена абстрактные классы и интерфейсы, ответы, которые я получил от экспертов, заключаются в следующем:
1. С точки зрения классовой иерархии, абстрактные классы находятся на вершине уровня, но в реальном дизайне абстрактные классы должны появляться позже. Почему? Фактически, приобретение абстрактных классов немного похоже на извлечение общих факторов в математике: AX+BX, X - абстрактный класс. Если у вас нет предыдущей формулы, как вы узнаете, является ли X общим фактором? В связи с этим это также соответствует процессу понимания мира, сначала конкретного, а затем абстрактного. Следовательно, если вы получите много конкретных концепций и находите общие черты в процессе проектирования, должно быть правдой, что эта коллекция общих черт является абстрактным классом.
2. На первый взгляд, интерфейс очень похож на абстрактные классы, но его использование совершенно другое. Его основная функция состоит в том, чтобы собрать некоторые неактуальные классы (концепции) вместе, чтобы сформировать новый, центрально работающий «новый класс». Типичным примером, который я даю студентам, является «драйвер». Кто может быть водителем? Любой может сделать это, если вы получите водительские права. Поэтому мне все равно, являетесь ли вы студентом, работником белых воротничков, работником синего воротника или боссом, если у вас есть водительские права, вы водитель.
интерфейс Driverlicence {лицензия getLicence (); } Class StudentDriver расширяет студенческие реализации Driverlicence {} Class WhtieCollareMployEedriver Extends WhtieCollAreMployee, реализует Driverlicence {} Class BlueCollareMployEedRiver Extends BlueCollareMploseee, реализует Driverlicence {} Class Bossdriver Extends Exclients Enmintement {}Когда я определяю класс «автомобиля», я могу указать «драйвер».
Class Car {setdriver (драйверльдизм);}В настоящее время объекту Car не заботится о том, что сделал водитель. Их единственным общим вопросом было то, что они получили водительские права (оба реализовали интерфейс Driverlicence). Это должно быть самой мощной частью интерфейса и несравненно с абстрактными классами.
Суммировать:
Абстрактные классы извлекают общие факторы конкретных классов, в то время как интерфейсы предназначены для «хэша» некоторых не связанных классов в общую группу. Обычно у нас есть хорошая привычка использовать несколько интерфейсов. В конце концов, Java является единственным наследством, в отличие от C ++, но она должна использоваться при использовании абстрактных классов (несколько похожих на Goto), хаха.
Я надеюсь, что эта статья будет полезна для всех Java Programming.