Сегодня я расскажу о своем собственном понимании абстрактных классов и интерфейсов в Java, включая справочный контент:
1. Аннотация класс
1. Определение:
Общественное абстрактное имя класса {}
Все объекты на языке Java описываются классами, но не все классы используются для описания объектов. Абстрактный класс, который я понимаю, на самом деле является высокой степенью извлечения общественных частей одинаковых вещей, которые включают атрибуты и поведение. Например, крупный рогатый скот, овцы и свиньи имеют все их публичные атрибуты, и все это грудное вскармливание, поэтому мы можем абстрагировать общественную часть в млекопитающее, содержащее атрибуты, волосы и поведение. Когда крупный рогатый скот, овцы и свиньи наследуют млекопитающее, они также имеют функцию грудного вскармливания. Что касается того, как выполнить эту функцию, они должны реализовать ее сами.
2. Особенности
(1) класс, измененный абстрактным ключевым словом, является абстрактным классом;
(2) классы, содержащие абстрактные методы, должны быть абстрактными классами, но абстрактные классы не обязательно содержат абстрактные методы; и абстрактные методы должны быть публичными или защищенными, в противном случае они не могут быть унаследованы подклассами. По умолчанию публично.
(3) В методе абстрактного метода не может быть реализация, в противном случае будет сообщена компиляция;
(4) Вы можете определить свои собственные переменные члена и методы членов в абстрактном классе;
(5) Когда подкласс наследует абстрактный класс, должны быть реализованы все абстрактные методы в абстрактном классе, в противном случае подкласс также должен быть определен как абстрактный класс;
(6) Абстрактные классы не могут быть созданы.
3. Убедитесь, что вышеупомянутые положения действительно как указано
Это таблица проверки, которую я отредактировал в Word, и я разрезал ее в изображение и поместил здесь:
Судя по приведенным выше рисунке, эти теории правильны
2. Интерфейс
1. Определение:
Имя интерфейса общедоступного интерфейса {}
Интерфейс используется для обеспечения методов. По моему мнению, это высокое извлечение общественного поведения нескольких классов. Например, общественное поведение всех животных ест и сон. Затем мы можем извлечь и инкапсулировать эти два поведения на одном интерфейсе. Когда животное необходимо выполнить это поведение, просто вызовите интерфейс, а затем заполните конкретную реализацию в своем собственном классе. Это понимание, кажется, ничем не отличается от абстрактных классов, поэтому давайте посмотрим на следующий пример. Если эти два поведения помещаются в абстрактный класс, но в абстрактном классе есть также ползающее поведение. В настоящее время, когда рептилия, такая как змея, наследует этот класс, она осознает три метода еды, сна и ползания, поэтому она имеет функции еды, сна и ползания; Но если животное летательного класса похоже на птицу, когда оно наследует этот метод, оно также имеет функции еды, сна и ползания. Очевидно, что ползание - это не та функция, в которой она нуждается, что является немного несоответствием. Однако, когда они наследуют только интерфейс еды и сна, они имеют основные функции еды и сна. Что касается лазания и полета, их можно абстрагировать и помещать в абстрактный класс, наследовать по требованию и реализовать функции, которые им нужны по требованию.
2. Особенности:
(1) Интерфейс может иметь свои собственные переменные члена, но они будут неявно указаны как общественный статический финал, и они могут быть только публичным статическим финалом. Все методы в интерфейсе являются абстрактными методами и будут неявно указаны как публичная абстракция.
(2) только абстрактные методы определены на границе раздела, и нет конкретной реализации;
(3) класс, который реализует интерфейс, должен реализовать все методы, определенные в интерфейсе;
3. Убедитесь, верна ли вышеуказанная теория
Точно так же вышеупомянутые теории верны!
3. Разница между абстрактными классами и интерфейсами:
1. Абстрактный класс может иметь свои собственные методы члена и их конкретные реализации; Интерфейс может содержать только абстрактные методы;
2. Абстрактные классы могут содержать различные типы переменных членов; Переменные члена в интерфейсах могут быть только публичным статическим финалом;
3. Класс может наследовать только один абстрактный класс, но может реализовать несколько интерфейсов;
4. Абстрактные классы могут содержать статические кодовые блоки и статические методы; Статические кодовые блоки и статические методы не могут быть определены в интерфейсе;
Убедитесь, что класс может наследовать только один абстрактный класс, но может реализовать несколько интерфейсов
Во -первых, определить два абстрактных класса: млекопитающее Mummals и класс рептилий Crawler
/** * @createTime 17 марта 2017 г. в 10:33:27 AM * @description млекопитающие */Общественные абстрактные классные млекопитающие {public String Foods; public rastice void mures /** * * @createtime 17 марта 2017 года в 11:23:09 * @description определить абстрактный класс - Класс Crawler */Public Abstract Class Crawler {public rable void crawl ();}Во -вторых, определите два интерфейса: один - базовый интерфейс Baseaction; другой - специальный интерфейс специального интерфейса
/** * * @createtime 17 марта 2017 года в 11:03:42 * @description определить интерфейс с именем базового поведения */public interface baseaction {public String name = ""; public void eat (); public void sleep ();} /*** @createtime 17 марта 2017 года в 11:24:56* @description определить интерфейс для реализации специального поведения*/public interface specialact {public void neamo ();}Затем определите базовых класса людей, наследуйте класс Mummals и реализуйте интерфейс базойкса и интерфейс специального предложения
/** * @createtime 17 марта 2017 г. в 11:25:48 AM * @description Определите общий класс - человеческие, наследственные млекопитающие, реализовать основные интерфейсы и специальные интерфейсы */Общедоступный класс, люди расширяют млекопитающие, внедряют базеацию, Specialaction {@override public void nesear () {// todo Auto -Generated stub} @Override @Overrid Автопогенерированный метод stub} @override public void sleep () {// todo автоматически генерируемый метод stub} @override public void медсестра () {// todo Автогенерированный метод stub}}}}}}}}}}}}Можно видеть, что подкласс может реализовать несколько интерфейсов.
Наконец, пусть базовые классные люди наследуют класс Mummals и класс Crawler одновременно
/** * @createtime 17 марта 2017 г. в 11:25:48 * @description определить общий класс - человеческие, наследственные млекопитающие, реализовать основные интерфейсы и специальные интерфейсы */Общедоступный класс People расширяет млекопитающих, Crawler {@override public void медсестра () {// todo Autogenerated Stub}}}}}}}}}}}}}}}}}}}}}}}Суммировать
Выше приведено все содержание этой статьи о кратком обсуждении личного понимания абстрактных классов и интерфейсов Java. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Примеры наследования и абстрактного кода бобов весной
Введение в основные идеи и интерфейсы Hibernate
Примеры методов интерфейса и использования в Java
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!