1. Зачем использовать интерфейсы
Если есть требование: это требует функции противоугодной двери. Дверь имеет функции «Open» и «Close», а замок имеет функции «блокировки» и «открытия».
Анализ: во-первых, противоугонная дверь-это дверь. Дверь имеет функции открытия и закрытия двери, а также есть замок. Замок имеет разблокировку и блокировку. Согласно идее объектно-ориентированного программирования, мы рассмотрим как дверь, так и замок как класс и существуют отдельно. Тем не менее, противоугодная дверь не может быть унаследована от двери и самополосного блока. Противоугодная дверь не является замком, что не соответствует отношениям, в отношении наследства. Одиночное наследство поддерживается на Java. Итак, как мы решаем эту проблему? В настоящее время нам нужно использовать интерфейс.
2. Что такое интерфейс
В программном обеспечении интерфейсы являются спецификацией и стандартом. Они могут ограничивать поведение классов и представляют собой набор некоторых функций метода. Тем не менее, нет реализации методов. Интерфейсы могут на самом деле рассматриваться как специальный абстрактный класс, но они используют совершенно разные методы от абстрактных классов для их представления. Концепции дизайна двух также разные. Абстрактные классы способствуют повторному использованию кода, а интерфейсы способствуют расширению и обслуживанию кода.
3. Разница между абстрактными классами и интерфейсами:
01 Abstract Class может предоставить детали реализации методов участников, в то время как в интерфейсе могут существовать только публичные методы абстракции;
02. Переменные члена в абстрактных классах могут быть разных типов, в то время как переменные членов в интерфейсах могут быть только из публичного статического окончательного типа;
03. Интерфейс не может содержать статические кодовые блоки и статические методы, в то время как абстрактные классы могут иметь статические кодовые блоки и статические методы;
04. Класс может наследовать только один абстрактный класс, в то время как класс может реализовать несколько интерфейсов.
4. Как определить интерфейс
Давайте сначала посмотрим на синтаксис:
[Modifier] Имя интерфейса интерфейса Extends Parent Interface 1, родительский интерфейс 2, ...
{
// постоянное определение
// определение метода
}
Реализовать синтаксис интерфейса в классе:
Имя класса класса Имя родителей Имя класса реализует интерфейс 1, интерфейс 2, ...
{
// член класса
}
5. Определение точек интерфейса
01. Правила именования интерфейса такие же, как и в классе. Если модификатор является общедоступным, интерфейс виден на протяжении всего проекта; Если модификатор опущен, интерфейс виден только в текущем пакете.
02. Константы могут быть определены в интерфейсе, но переменные не могут быть определены. Если вы определяете атрибуты в интерфейсе, то благодаря декомпиляции вы увидите, что они автоматически изменят их с помощью публичного статического финала. Атрибуты в интерфейсе являются глобальными статическими константами, и константы в интерфейсе должны указывать начальное значение при определении.
03. Все методы в интерфейсе являются абстрактными методами, а методы в интерфейсе будут автоматически изменены с помощью публичной абстракции, то есть есть только глобальные абстрактные методы в интерфейсе.
04. Интерфейс не может быть создан экземпляр, и в интерфейсе не может быть структуры.
05 Соотношение наследования можно реализовать посредством продления между интерфейсами. Один интерфейс может наследовать несколько интерфейсов, но интерфейс не может наследовать классы.
06. Класс реализации интерфейса должен реализовать все методы интерфейса, в противном случае он должен быть определен как абстрактный класс.