Комментарии:
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
ОтветитьЖалко что ваш дискорд сервер умер, эх, столько хороших воспоминаний с него, столько хороших людей..
ОтветитьГде маты, собачки и маслята?) Не узнаю этот канал в молодости)
ОтветитьДа как ты смеешь?
Хотя, норм.
ваще понятно. автор объяснил примерно на уровне: знак главная дорога желтый а стоп красный
ОтветитьПока что понимание интерфейса такое что в интерфейсе мы пишем что есть Организация и она запрещенная, а в каждой реализации мы как бы клеймим метод и даем всем понять что эта организация запрещенная на территории определенной страны
ОтветитьБедный Николас и его мама…
Ответитьглавное, что я понял из этого видео, что если вам на собесе задают этот вопрос,
то вас собесает джун.
Если кто-то хочет серьёзно вникнуть в вопрос, то необходимо изучить проблеммы, возникающие при множественном наследовании с C++.
Без этих знаний это всё - болтовня.
Спасибо!!!
ОтветитьСпасибо. Мне понравилось
ОтветитьНа дворе 21 год и уже с появлением .net core 5 в интерфейсы так же можно закладывать базовую реализацию. Всем спасибо, ностальжи, видео не останется забытым!!
Ответитьочень поверхностно, этого не достаточно для понимания...
ОтветитьТак какой смысл от нащего интерфейса с функцией Move, если каждый класс реализует его независимо? Таким образом не происходит сокращение кода, с тем же успехом можно было без интерфейса реализовать эти методы.
ОтветитьЕсли коротко то. Абстрактный класс - обычный класс от которого наследуются.
А интерфейс - описание методов для множества независимых классов между собой.
Нихрена не понял...
ОтветитьСпасибо за пересказ статьи из метанита
Ответитьwat?
Ответитьтак у самолет вертолет сабака лодка .. зачем интерфейс ? оно же есть в своем абстрактном классе самолет вертолет собака лодка .. нахрена тут интерфейс ? очевидно чтобы повыёживаться ?
ОтветитьЭто именно то что я искал
Ответитькак же сложно понять эту ересь без практики её использования. Сейчас немного прояснилось
ОтветитьЭкстремально чётко!
ОтветитьАвтор совершенно не разбирается в теме, зачем снимать видео, если сам не углубился в вопрос? "Чухчухчух" говорит паровозик. Атписка.
ОтветитьВас и вправду двое что-ли? Я думал это шутка.
ОтветитьАбстрактный класс может содержать реализации. Интерфейс - нет.
ОтветитьВсе это необходимо объяснять в контексте паттернов, использующих данные конструкции языка. Чтобы у людей было понимание не только что это такое, а и когда и как это нужно правильно использовать.
ОтветитьНачиная с С# 8 с интерфейсами началась какая-то жопа. Теперь они зачем-то хранят в себе значения свойств. Нафига, не понятно. Зато баги полезли из-за дублирования одних и тех же свойств в классе и интерфейсе.
ОтветитьЧетко, даже Nicolas_mom поняла
ОтветитьСпс, пнл, збс :)
ОтветитьЕсли класс можно
в некотором смысле назвать абстракцией объекта, то interface можно
назвать абстракцией методов. K.O.
Я тупой. Показывай на яблоках.
ОтветитьТо есть интерфисы мы можем использовать для различных объектов ну как в примере : IMovable, машина, собака, кот... они все могу передвигаться! А abstract class используется точно для конкретнои цели, public abstract Vehicle - тока для авто ?
ОтветитьПонял разницу в другом видео, здесь закрепил
Если абстр класс это транспортное средство, то объект - это, например самолёт или танк или ментовский бобик, т.е объект ЯВЛЯЕТСЯ абстрактным классом, самолёт - это транспортное средство, и тд. А вот интерфейс это например то, что это транспортное средство МОЖЕТ делать - двигаться. Например лететь в Тайланд или везти тебя с мигалками, при чём второй вариант веселее и бесплатный. Т.е. самолёт реализовывает интерфейс и теперь он может двигаться, но он может и не делать этого, если это например памятник второй мировой. В таком случае он является самолётом, т.е объектом абстрактного класса транспортное средство, но может реализовывать другой интерфейс, например быть фоном для селфи
Очень приятные видео, спасибо за контент! :)
ОтветитьNICOLAS_MOM_WEIGHT = POSITIVE_INFINITY
ОтветитьМожет кто-то сильно удивится, но в C++ "ключевое" слово interface - синоним ключевого слова class. Ноги отсюда растут. И из COM. По сути интерфейс это возможность сделать множественное наследование на нескольких абстрактных классах, но обламывая возможность сломать себе ногу в нескольких местах при этом. Кстати такая же фигня есть в делфи, но там интерфейсы - удовольствие весьма сомнительное.
Это было техническое различие. А есть еще различие по способу применения. Так вот - интерфейсы используются когда нужна слабая связанность компонентов системы, так как они не содержат релизации, когда нужно код распихать по различным независимым dll-кам (Привет COM). Абстрактные классы же просто используются при построении иерархий наследования как более базовые типы.
Не обязательно методы, реализуемые интерфейсом должны быть публичны. Можно сделать internal интерфейс и реализовать его явно в публичном классе. Пример - Tuple<T> : ITuple
ОтветитьНа самом деле это разные вещи для разных целей. Абстрактным классом конечно возможно заменить интерфейс, но делать этого не нужно, хотя бы по вот этим двум причинам:
1) Длина кода, зачем громоздить длинные конструкции из лишних ключевых слов
abstract class A { abstract public void X(); }
class B : A { override public void X(); }
если можно написать лаконичнее
interface A { void X(); }
class B : A { public void X(); }
2) Абстрактный класс все же является объектом, и в IL реализуется его конструктор. И если в проекте используется длинное древо наследований, то это куча ненужных лишних перегрузок, что означает минимальную, но потерю производительности. В современных реалиях разницу оn нескольких лишних тактов процессора конечно вряд ли кто-то заметит (если вы конечно не создаете миллион объектов в секунду), но зачем нужно даже минимальное зло, если можно его избежать.
один чёрт не понимаю смысла. Всё так сложно называется, а по факту интерфейсы это способ просто собрать в одном месте все методы которые нужно реализовать и отдать его прогеру пониже рангом что бы он юзал его и создавал методы по этому интерфейсу. А абстрактный классы это способ реализации разных задач одним методом для сокращения кода, но по факту это часто вызывает путаницу
Ответить