Концепция и использование интерфейса Java <Br /> В абстрактном классе можно включить один или несколько абстрактных методов;
Объявлено ключевое слово интерфейса, которое можно рассматривать как специальный абстрактный класс, который указывает, что должен делать класс, а не указывает, как он это делает.
В реальности также есть много примеров интерфейсов, таких как серийные компьютерные жесткие диски. Серийный комитет ATA не несет ответственности за производство жестких дисков, а только указывает общие спецификации.
Seagate, Hitachi, Samsung и другие производители будут производить жесткие диски, которые соответствуют интерфейсу в соответствии со спецификациями, и эти жесткие диски могут быть обобщены. 320G Seagate Serial Hard Disk и установите его.
Следующий код может имитировать Серийный комитет ATA для определения следующего серийного интерфейса жесткого диска:
// Последовательный интерфейс жесткого диска Публичный интерфейс Satahdd {// Количество подключенийПРИМЕЧАНИЕ. Переменные элемента, объявленные в интерфейсе, являются общедоступными статическими окончательными по умолчанию и должны отображаться инициализированы. Следовательно, эти модификаторы могут быть пропущены при объявлении постоянных.
Интерфейсы представляют собой набор нескольких констант и абстрактных методов, которые в настоящее время, по -видимому, похожи на абстрактные классы. Действительно, интерфейсы развивались из абстрактных классов, поэтому, если не указано иное, интерфейсы пользуются тем же «лечением», что и классы. Например, несколько классов или интерфейсов могут быть определены в исходной программе, но в большинстве случаев может быть доступен один публичный класс или интерфейс. Подобно формату наследования класса, также могут быть наследовать интерфейсы, а подпольвы могут наследовать постоянные и абстрактные методы на границе с родителями и добавлять новые абстрактные методы и т. Д. И т. Д.
Тем не менее, интерфейс имеет свои характеристики, обобщенные следующим образом.
1) Только абстрактные методы могут быть определены в интерфейсе. Попытка определить переменные экземпляра, методы неабстрактных экземпляров и статические методы на границе раздела, являются незаконными. Например:
Общедоступный интерфейс Satahdd {// Количество линий подключения Public Int ConnectLine; Be Public Type // Прочитать данные общедоступной статической строки readdata () {// ошибка компиляции, интерфейс не может содержать статический метод возврата "Data";3) В интерфейсе нет конструктора и не может быть создан.
4) Один интерфейс не реализует другой интерфейс, но может наследовать множество других интерфейсов. Функция мульти-сэризации интерфейса составляет единственное наследство класса. Например:
// Серийный интерфейс жесткого диска Публичный интерфейс Satahdd Extens A, B {// Количество соединительных линий. ;Зачем использовать интерфейс
В крупномасштабной разработке проекта может потребоваться вставить класс из середины цепочки наследования, чтобы позволить ее подклассам выполнять определенные функции, не влияя на их родительские классы. Например, a -> b -> c -> d -> e, а является предком. сорт. Но проблема в том, что Java - это единственный язык наследования. Таким образом, модификации классов C, D и E влияют на всю цепочку наследования и не подлежат подключению.
Интерфейс является гарантией внедрения. Любой класс в цепочке наследования может реализовать интерфейс, который повлияет на все подклассы этого класса, но не повлияет на какого -либо родительского класса этого класса. Такие классы должны будут реализовать методы, указанные этим интерфейсом, и подклассы могут автоматически наследовать эти методы из этого класса, и в настоящее время эти подклассы подключаются.
То, что нас волнует, не является конкретным классом, а в том, реализует ли этот класс нужный интерфейс.
Интерфейс обеспечивает интерполяцию и методы вызовов.
Интерфейсы играют важную роль в объектно-ориентированном программировании Java. Фактически, одной из наиболее важных задач на этапе проектирования является разработка интерфейсов каждой части, а затем сформировать основную структуру программы посредством комбинации интерфейсов.
Использование интерфейсов
Использование интерфейсов несколько отличается от использования классов. Там, где вам нужно использовать класс, новое ключевое слово будет использоваться непосредственно для создания экземпляра класса, но интерфейс не может быть использован так, потому что интерфейс не может напрямую использовать новое ключевое слово для создания экземпляра.
Интерфейс должен реализовать свои абстрактные методы с помощью класса, а затем создавать экземпляр класса. Ключевым словом интерфейса реализации класса является орудия.
Если класс не может реализовать все абстрактные методы интерфейса, то класс должен быть определен как абстрактный метод.
Экземпляр интерфейса не разрешается создавать, но эталонная переменная типа интерфейса разрешена определить, что указывает на экземпляр класса, который реализует интерфейс.
Класс может наследовать только один родительский класс, но может реализовать несколько интерфейсов.
Формат интерфейса реализации заключается в следующем:
Имя класса модификатора расширяет родительский класс, реализует несколько интерфейсов {
Метод реализации
}
Пожалуйста, смотрите следующий пример:
Импорт статический java.lang.system Samsung Hard Disk}} // Интерфейс серийного диска Satahdd {// Количество линий подключения. ;}// Ремонт интерфейс жесткого диска fixhdd {// ремонт адресной строки = "haidian district, pecijing"; String readdata () {return "data"; // Samsung Hard Drip Class Samsunghdd реализует Satahdd {// Samsung Hard Drive Readdata () {return "Data"; Жесткий диск не может написать данные.Используйте интерфейс как тип
Интерфейс используется в качестве эталонного типа. Определите, что должен быть, какой метод класса используется, фактически вызывает соответствующий метод класса реализации.
Примеры следующие:
открытый класс демо {public void test1 (a a) {a.dosth (); A); Результаты работы:
Теперь в б
Как вы видите, интерфейсы могут использоваться в качестве типа, используя интерфейсы в качестве параметров методов и типов возврата.
Разница между интерфейсом Java и классом абстрактного класса <br /> - это шаблоны объектов, а абстрактные классы и интерфейсы могут рассматриваться как шаблоны бетонных классов.
Поскольку с определенной точки зрения, интерфейсы являются специальным абстрактным классом, они имеют глубокую связь и имеют большое сходство, поэтому легко путать, кого использовать. Сначала мы анализируем сходство, которое у них есть.
Все они представляют абстрактные слои, подобные деревьям,. При использовании эталонных переменных попробуйте использовать абстрактный уровень структуры класса, чтобы разделить определение и реализацию метода.
Ни один из них не может быть создан.
Все могут содержать абстрактные методы. Абстрактные методы используются для описания того, какие функции предоставляет система без необходимости заботиться о конкретных реализациях.
Давайте поговорим о основных различиях между абстрактными классами и интерфейсами.
1) Абстрактные классы могут предоставить реализации для некоторых методов, избегая повторных реализаций этих методов в подклассах и улучшение возможностей повторного использования.
Общественный абстрактный класс A {public abstract void method1 (); method1 () {// c Method1}}Аннотация Класс A имеет два подкласса B и C. Поскольку A имеет реализацию метода Method2 в нем, метод Method2 не должен быть переписывается в подклассах B и C. Мы говорим, что A обеспечивает публичные функции для подклассов или ограничивает его . поведение подклассов. Метод2 является примером многоразового кода. A не определяет реализацию Method1, то есть B и C могут реализовать метод метода1 в соответствии с их собственными характеристиками, что отражает характеристики свободной связи.
Измените его на интерфейс и посмотрите:
Публичный интерфейс a {public void method1 (); реализует {public void method1 () {// c Method1} public void method2 () {// c Method2}}}}Интерфейс A не может предоставить публичные функции для реализации классов B и C, что означает, что A не может ограничить поведение B и C. B и C могут свободно проявлять свои характеристики и реалистичные методы1 и методы Method2, а интерфейс A не имеет контрольной способности.
2) Класс может только наследовать только прямой родительский класс (возможно, абстрактный класс), но класс может реализовать несколько интерфейсов, что является преимуществом интерфейса.
Интерфейс a {public void method2 ();} интерфейс b {public void method1 ();} класс C реализует a, b {public void method1 () {// c method1} public void method2 () {// c method2} } // C можно использовать так гибко, и C имеет возможность расширить и реализовать другие интерфейсы a = new c (); Класс B расширяет {public abstract void method2 ();} класс C Extends b {public void method1 () {// c Method1} public void method2 () {// c Method2}}Для класса C не будет шансов унаследовать другие родительские классы.
Подводя итог, интерфейсы и абстрактные классы имеют свои преимущества и недостатки.
Поведенческая модель всегда должна определяться через интерфейсы, а не абстрактные классы, поэтому интерфейсы обычно предпочтительны, а абстрактные классы должны использоваться как можно меньше.
При выборе абстрактного класса это обычно следующая ситуация: вам нужно определить поведение подкласса и обеспечить общие функции для подкласса.