При реализации интерфейса мы используем синтаксис интерфейса, чтобы отделить интерфейс от определения класса и сформировать субъект. интерфейс предоставляет спецификации интерфейса для классов.
В наследование мы вводим механизм наследования, чтобы улучшить возможность повторного использования программы. Наследование в то время основывалось на классах. Интерфейс интерфейса также может быть унаследован для расширения исходного интерфейса.
Наследование интерфейса
Наследование интерфейса (наследование) очень похоже на наследование классов, которое заключается в добавлении новых прототипов методов интерфейса на основе унаследованного интерфейса. Например, в качестве исходного интерфейса мы используем Cup:
Скопируйте код кода следующим образом:
Кубок интерфейса {
недействительными addWater (INT W);
недействительный напитокWater (int w);
}
На основе наследования Cup мы определяем новый интерфейс для чашек с весами MetricCup.
Интерфейс выглядит следующим образом:
Скопируйте код кода следующим образом:
интерфейс MetricCup расширяет Cup
{
int WaterContent();
}
Мы добавили новый прототип метода WaterContent(), который возвращает целое число (количество воды).
Множественное наследование интерфейса
При наследовании классов Java производный класс может иметь только один базовый класс. Другими словами, класс не может наследовать более чем от одного класса одновременно. В Java интерфейс может наследовать более одного интерфейса одновременно, это называется множественным наследованием.
Например, у нас есть следующий интерфейс Player:
Скопируйте код кода следующим образом:
интерфейс плеера
{
недействительная игра ();
}
Мы добавляем новый интерфейс MusicCup. Он имеет интерфейс Cup и интерфейс Player, а также добавляет прототип метода display().
Скопируйте код кода следующим образом:
интерфейс MusicCup расширяет Cup, Player
{
недействительный дисплей();
}
(Как использовать интерфейс, см. Реализация интерфейса)
абстрактный класс
В жизни у нас есть очень абстрактные понятия. Эти абстрактные концепции часто представляют собой набор многих классов, таких как:
1. Зерно (можно кукурузу, пшеницу, рис)
2. Графика (могут быть треугольники, круги, квадраты)
В качестве другого примера мы уже приводили пример:
1. Люди (могут быть мужчины или женщины)
При организации таких отношений мы можем использовать наследование, например:
Согласно нашему здравому смыслу:
1. Термин «объект класса Еда» является абстрактным. Такой объект должен принадлежать одному из подклассов Кукуруза, Рис и Пшеница.
2. В классе Food есть метод eat() (еду можно есть). Однако такое действие является абстрактным. Конкретные способы употребления пищи различны. Например, кукурузу нужно очистить и съесть, а пшеницу — перемолоть в муку. Нам нужно переопределить метод eat() класса Food в каждом классе.
абстрактное и конкретное
Java предоставляет синтаксис абстрактного класса для иллюстрации абстракции классов и их методов. например:
Скопируйте код кода следующим образом:
абстрактный класс Еда {
публичная абстрактная пустота eat();
общественная недействительность HappyFood();
{
System.out.println("Хорошо! Съешь меня!");
}
}
Методы в классе могут быть объявлены абстрактными, например eat() выше. На данный момент нам не нужно конкретно определять метод, нам нужно только предоставить прототип метода. Это похоже на интерфейсы. Когда мы наследуем этот класс, например, от класса Corn, нам необходимо предоставить конкретное определение метода eat().
Другой метод в классе HappyFood() не является
Когда в классе появляется абстрактный метод, к объявлению этого класса необходимо добавить ключевое слово Abstract, иначе Java сообщит об ошибке. Абстрактный класс не может использоваться для создания объектов.
Наследование абстрактных классов
Мы можем наследовать абстрактный класс точно так же, как класс. Мы должны использовать полные определения методов, чтобы охватить абстрактные методы абстрактного класса, в противном случае производный класс по-прежнему будет абстрактным классом.
Абстрактные классы могут иметь в своем определении элементы данных. Наследование членов данных такое же, как и в обычном классе.
Подвести итог
наследование интерфейса, множественное наследование
абстрактный метод, абстрактный класс