Программирование на Java для начинающих. Продолжение темы объектно-ориентированного программирования. Базовые сведения об интерфейсах и абстрактных классах. Пример использования, указание на различия.
Ну я ещё добавлю разницу между Абстрактным Классом и Интерфейсом.... Интерфейс даёт поведение разным объектам которые к примеру умеют летать пример от интерфейса Fly можно имплементить метод fly() и его могу имплементить разные классы типа Птица , Самолёт или Пчела... А абстрактный класс неполноценный класс поэтому у него нету экземпляра и от него наследуются похожие на него класс потому что у них должны быть похожие методы возьмёт к примеру Абстрактный класс Самолёт он же Airplain у самолёта есть части матор колёса и тд...делаем из запчастей методы к примеру motor(); и можно от него наследоваться и будут базовые параметры...И добавлю ещё почему использовать абстрактный класс все абстрактные классы это абстрактные сущности то есть грубо говоря неконкретные но мы может из Самолёта наследоваться своим классом конкретным самолётом к примеру модель которого Ту-204 и всё готово можно дописывать свои конкретные параметры... Всем спасибо удачи (не лайкайте не для этого старался ^_^)
Огромное спасибо за урок, пересмотрел множество видео на ютубе как местных так и зарубежных, так ине смог понять в чем вся суть интерфейса и абстрактных классов, а тут 25 минут и вуаля Прозрел!!
Добрый день! Очень понятное и доступное изложение материалов для тех, кто только начинает учиться. Было бы круто, если бы те же самые темы , например Коллекции, Ввод-вывод данных и паттерны проектирования по принципам ООП раскрылись в других лекциях чуть более подробно и глубже по той же схеме обучения.Спасибо.
В случае интерфейса, цвет можно было указывать в конструкторе при создании объекта дочернего класса, а теперь когда используем абстрактный класс, гибкость исчезла и нужно цвет указывать явно в каждом конструкторе наследуемого класса (круг, четырехугольник) , правильно я понимаю ??? А можно же было оставить эту возможность (указать цвет при создании объекта) и в этом случае, при варианте абстрактного класса ? public Rectangle (double h, double w, string c){ super (c); height=h; width=w; }
Короч он как все , не юзает нигде то о чем снимает,не соображает . Та и вообще , где в реальности это используется , название приложения ,игры, сайта и и.д.?
Автор просто бог, спс огромное, в сравнении с 4 другими видеоавторами выглядит немного менее уверенным(просто изза достаточно низкой скорости набора) но в компенсацию просто в несколько раз проще и детальнее чем ближайшие коллеги (только Алишев и книга "Философия джавы" может попытаться конкурировать но у вас куда более комплексная информация) ^^
time frame -(временное ограничение) Теория 0-09 Абстрактные классы 3-46 Интерфейсы 4-02 Отличие Интерфейса и Абстрактного класса ( Практика 5-20 Интерфейсы 6-25 создаем интерфейс 7-20 10-40 Класс Круг - реализация ( implements ) интерфейса 14-40 Класс Прямоугольник - реализация ( implements ) интерфейса 17-03 19-20 Абстрактный класс ( переделываем интерфейс) 22-20 расширение (extends) круга и прямоугольника абстрактным классом Shape 19-20 Абстрактные классы 19-20 Абстрактный класс ( переделываем интерфейс) 22-20 расширение (extends) круга и прямоугольника абстрактным классом Shape 23-35 конструктор Абстрактного класса.
В таком случае конструкторы классов наследников (круг и прямоугольник) выглядят след. образом: public Circle(double radius, String color) { super(color); this.radius = radius; } public Rectangle(double height, double width, String color) { super(color); this.height = height; this.width = width; }
Довольно много времени провёл разбираясь в механизмах расширения абстрактных классов и интерфейсов. Может для наглядности представлять такие запутанные отношения в виде блок-схемы? Как насчёт самостоятельной работы над темой? В конце публикуется мини-задание и каждый самостоятельно его делает на основе пройденного материала.
Здравствуйте, урок полезный, но очень сжатый. Мне кажется стоило рассказать про default методы. Так же принципиальную разницу между интерфейсом и абстрактным классом и для чего они нужны.
Да, все правильно, ввели методы по умолчанию. Но я никому не советую их использовать, кроме задач с переписыванием большого количества устаревшего кода.
Спасибо за урок, но возник вопрос. В случае замены интерфейса на абстрактный класс мы всегда будем получать объекты с цветом указанным в классе объекта, а в случае с интерфейсом мы полностью определяли объект в момент создания - как можно этот функционал реализовать через абстрактный класс?
Метод возврата цвета можно переопределить в классе-потомке. То есть написать метод с полностью совпадающей сигнатурой и пометить его аннотацией @Override. И в этом методе можно возвращать цвет специфичный для потомка, а не для абстрактного класса.
@@BoostBrainCourse Можно ведь было сохранить передачу цвета, как параметра в конструктор Circle(int r, String c) и Rectangle(int h, int w, String c), а потом передать этот параметр в super(c). Понимаю, что это всего лишь придирка, ведь по факту главная цель урока заключалась в том, чтобы помочь понять тему, что у Вас в который раз отлично получилось.
Приветствую дорогой автор видео. На курсах по программированию меня ругали за то что пытаюсь вывести гетеры сетеры в интерфейс - типа плохая практика , а так же за то что реализацию того же арэйлиста делаю на прямую через класс , а не абстракция тип Лист = нью арэй лист . Почему в своемм видео вы делаете так , за что на курсах ругают . С оговоркой эти курсы" Крупной компании ".
Не совсем понимаю, что значит вывести геттеры и сеттеры в интерфейс. Имеется в виду создание нового interface? Если так, то непонятно зачем.Обычно геттеры и сеттеры это признак т.н. POJO, а там интерфейс действительно не нужен. Что касается конкретизации типа, то я, честно говоря, не знаю, зачем на курсах требуют пользоваться только абстрактным классом. Абстрактные классы предпочтительнее указывать в объявлении метода, например, как входные данные, или в объявлении переменных класса. Но зачем непосредственно в коде использовать абстрактные типы для переменных не совсем понятно. Наверное, чтоб не использовать какие то специфические особенности, поскольку это может затруднить переход на другую реализацию. Но с другой стороны всякое правило должно иметь разумные пределы применения.