На этом занятии мы узнаем, что такое интерфейс (interface) в языке программирования C#, научимся их реализовывать (имплементировать) явно и неявно. Узнаем основные отличия интерфейсов и абстрактных классов.
Как вообще осуществляется спонсирование ? Я нажимаю кнопку "Спонсировать" . Деньги откуда снимаются с какого счета ? Наверно с того , куда я плачу за доступ в интернет через платежное агентство ? И как потом прервать перечисления ? Дайте подробную инструктцию . Может один-два месяца можно проспонсировать .
По идее при первом платеже у тебя должно попросить ввести данные карты. потом каждый месяц будет списываться сумма. Отказаться можно в любой момент в профиле RUclips. Там должна быть кнопка что-то вроде "покупки и спонсорство". Там полный список всех спонсируемых каналов и способ оплаты. можно отключиться там
Вот тут ещё есть хорошее пояснение этой же темы, если кому ещё не понятно: ruclips.net/video/FQf14kj8HwU/видео.html А так то зачёт автору! столько всего и на халяву рассказывает.
Вадим просто шикарное пояснение многие вещи стали понятны. Есть вопрос за видимость классов, переменных. Абсолютно понятен принцип считать всех идиотами, но при этом все те же переменные мы же прописываем сами. У пользователя нет доступа к переменным и нет возможности запросить что то публичное если мы это не указывали. Что то этот момент для чего используются приватные вещи я не понимаю. Не затруднит Вас просветить этот момент
Для удобства написания кода в том числе. Если какая-то переменная доступна, её можно будет выбрать в выпадающем списке. Когда у тебя будет большой проект с большим количеством кода - не мудрено будет что-то перепутать. Может ещё какие-то причины есть, но тут я не знаю, сам новичок)
Ну не знаю, чел часто путает понятия. Даже когда вроде сначала говорит правильно, что например, интерфейсы не наследуются. Далее сам начинает говорить, что тот или иной класс наследуется от интерфейса. Список называет массивом, хотя это совершенно разные понятия. В общем, считаю, что если берешься учить, будь добр, знай предмет на 5 с плюсом. А так получается каждый второй разработчик уже учить лезет, хотя у самого знания далеко не идеальные. Поэтому они только путают тех, кто пытается учить. Потом у людей вопросы, а почему их завалили на собеседовании, ведь они честно отсмотрели тот или иной курс и все запомнили. А оказывается, что большинство курсов записывают вообще не профессионалы, а те, кто сам только вчера тему изучил. Даже какая-то оговорка может отложиться в голове ученика, поэтому надо следить, чтобы даже оговорок никаких не было. Ну или хотя бы делать пометки в видео потом, как делают те, кто все-таки чувствует какую-то ответственность.
Можно представить интерфейс как некий контракт который обязаны исполнить все наследующие этот интерфейс классы. И этот же контракт будут использовать клиенты (имеется в виду, например, другие классы) при работе с этим классом.
Вопрос, можно ли (а если можно, то как) у свойств интерфейса и у классов, которые унаследовали этот интерфейс, быть разные уровни доступа, например у интерфейса есть свойство T, а у класса наследника будет свойство protected T?
26:15... Каким сочетанием клавиш это было сделано? (Автоматическая реализация интерфейса в классе) Или это чисто фишка VS, которую в других средах не найти? ПС, спасибо за урок, всё было неплохо) На этот раз было проще уловить, а точнее, здесь мало элементов C# затронуто, и незнакомых лично для меня вообще не было.
К комментаторам выше. Данная схема, т.е. полное описание метода (или другого), будет так же формировать всплывающую подсказку в VS, если ты где-то захочешь вызвать этот метод. Это особенно заметно при использовании методов стандартной библиотеки, только начинаешь писать, а там уже написана подсказка, что метод делает, какие параметры что обозначают.
После вопроса об одновременном наследовании класса и реализации интерфейса (или интерфейсов) возник вопрос: Что если в классе-родителе, каким-то магическим образом содержится метод, идентичный по сигнатуре методу, определенному в интерфейсе, но при этом класс-родитель, не реализует интерфейс (который нужно реализовать в классе-наследнике). А что если класс родитель реализует интерфейс, который так-же необходимо реализовать классом-наследником.
Если есть какие либо реализации или поля в интерфейсе, то все они в производных классах будут статичные. А реализации и поля унаследованные от абстрактных классов, для каждого производного экземпляра будет своя версия состояния.
Имплементация метода и его интерфейса похожа на простое описание метода этот метод будет и так доступен без интерфейса из объекта этого класса не понимаю в чем здесь фишка ? Может этот метод реализуется водном классе , доступен будет где наследуется этот интерфейс пусть из пустого класса ?
Жду с нетерпением . Тупо переписал ваш этот проект из этого ролика сейчас пытаюсь понять принцип работы интерфейса . У вас ролики избыточно длинные трудно перекопировать проект , но все-таки интересно .
Вопрос по наследованию и реализации интерфейсов 25:19 как я понял это наследование интерфейса, верно? 32:10 а тут реализация? из-за того что класс "наследует" более одного интерфейса это называется реализацией? или же наследование и реализация для интерфейса это одно и тоже? (суть не в сехе работы, а как что называют), а когда интерфейсов больше одного то это уже множественное реализация?
На самом деле здесь просто не совсем правильно говорить про наследование интерфейсов. Наследование подразумевает, что ты получаешь логику из предка, а интерфейс не содержит логики. Поэтому корректнее говорить про реализацию интерфейса. Когда ты реализуешь интерфейс ты всего лишь говоришь, что в классе есть такие же члены, как объявленные в интерфейсе. но напрямую интерфейс и класс его реализующий не связаны, интерфейс не передает в класс логику
Менять только свойства второй формы из первой через ее объект можно легко поменять его в событии - одним кликом очень легко . А менять свойства объектов которые находятся на второй форме - трудно , они недоступны из первой формы .
Если два одинаковых свойства связанные одним интерфейсом разных классов , то получив значения первое свойства передаст это значение во второй класс на второе свойства ? У интерфейсов есть объекты ? Я их только-только учу .
1:02:00 (или как-то так) А в С++ есть же abstract и virtual, который по сути делает множественное наследование классов удобнее, ведь не нужно разделять на классы и интерфейсы, можно просто фигачить. (если я правильно помню)
На этом занятии мы узнаем, что такое интерфейс (interface) в языке программирования C#, научимся их реализовывать (имплементировать) явно и неявно. Узнаем основные отличия интерфейсов и абстрактных классов.
CODE BLOG, не подскажешь. Удобно ли будет на ноутбуке маке разрабатывать под виндовс?
Благодарю. Помогло заполнить некие пробелы.
Спасибо за уроки. Они великолепны =)
Всегда пожалуйста )
Очень круто. Большое спасибо.
После двух предыдущих тем эта зашла как по маслу)))
А как сделать так, чтобы сразу в Solution Explorer показывал ошибку, в смысле подчеркивалось красным. Кто знает, ответьте пожалуйста
Домашнее задание:ОТВЕТ:
interface IMyInterface
{
int Number { get; }
void Show();
}
interface IMyInterfaceTwo : IMyInterface
{
void First();
}
class Program : IMyInterfaceTwo
{
public int Number
{
get
{
return 0;
}
}
public void Show()
{
}
public void First()
{
}
static void Main()
{
}
}
Прошло 5 лет, кое что поменялось и в мире и в самом c#, но видео все еще актуально и полезно. Спасибо автору огромное!
Как вообще осуществляется спонсирование ? Я нажимаю кнопку "Спонсировать" . Деньги откуда снимаются с какого счета ? Наверно с того , куда я плачу за доступ в интернет через платежное агентство ? И как потом прервать перечисления ? Дайте подробную инструктцию . Может один-два месяца можно проспонсировать .
По идее при первом платеже у тебя должно попросить ввести данные карты. потом каждый месяц будет списываться сумма. Отказаться можно в любой момент в профиле RUclips. Там должна быть кнопка что-то вроде "покупки и спонсорство". Там полный список всех спонсируемых каналов и способ оплаты. можно отключиться там
За болванку вам отдельное спасибо .
Спасибо вам за ваши уроки
Вот тут ещё есть хорошее пояснение этой же темы, если кому ещё не понятно: ruclips.net/video/FQf14kj8HwU/видео.html
А так то зачёт автору! столько всего и на халяву рассказывает.
Вадим просто шикарное пояснение многие вещи стали понятны. Есть вопрос за видимость классов, переменных. Абсолютно понятен принцип считать всех идиотами, но при этом все те же переменные мы же прописываем сами. У пользователя нет доступа к переменным и нет возможности запросить что то публичное если мы это не указывали. Что то этот момент для чего используются приватные вещи я не понимаю. Не затруднит Вас просветить этот момент
Для удобства написания кода в том числе.
Если какая-то переменная доступна, её можно будет выбрать в выпадающем списке.
Когда у тебя будет большой проект с большим количеством кода - не мудрено будет что-то перепутать.
Может ещё какие-то причины есть, но тут я не знаю, сам новичок)
@@NeizBest удобство в работе понятно но здесь идёт вопрос безопасности а вот здесь я как раз и не понимаю
почему так мало лаек?! ленивые подписчики!!!
smotryu na skorosti 1.5x hihi
Отличные уроки, большое спасибо за ваш труд!
Ну не знаю, чел часто путает понятия. Даже когда вроде сначала говорит правильно, что например, интерфейсы не наследуются. Далее сам начинает говорить, что тот или иной класс наследуется от интерфейса. Список называет массивом, хотя это совершенно разные понятия. В общем, считаю, что если берешься учить, будь добр, знай предмет на 5 с плюсом. А так получается каждый второй разработчик уже учить лезет, хотя у самого знания далеко не идеальные. Поэтому они только путают тех, кто пытается учить. Потом у людей вопросы, а почему их завалили на собеседовании, ведь они честно отсмотрели тот или иной курс и все запомнили. А оказывается, что большинство курсов записывают вообще не профессионалы, а те, кто сам только вчера тему изучил. Даже какая-то оговорка может отложиться в голове ученика, поэтому надо следить, чтобы даже оговорок никаких не было. Ну или хотя бы делать пометки в видео потом, как делают те, кто все-таки чувствует какую-то ответственность.
Для наглядности можно реализовать интерфейсы IRace и IDecay. Первый для лады, 2й для БМВ :-P
Ты что, тебя любители Приор загрызут )))
в 5:27 начало. Автору Спасибо.
Всегда пожалуйста )
Надо бы обновить информацию, интерфейсы теперь поддерживают реализацию )
Мега полезный видеоурок, всё очень понятно, спасибо!
Можно представить интерфейс как некий контракт который обязаны исполнить все наследующие этот интерфейс классы. И этот же контракт будут использовать клиенты (имеется в виду, например, другие классы) при работе с этим классом.
У меня при неявной реализации Move() выдает ошибку и просит явную реализацию для каждого интерфейса
за 100к побреешься налысо?
Красавчик других слов нет
Вопрос, можно ли (а если можно, то как) у свойств интерфейса и у классов, которые унаследовали этот интерфейс, быть разные уровни доступа, например у интерфейса есть свойство T, а у класса наследника будет свойство protected T?
Вместо интерфейса можно использовать абстрактный класс?
Можно, но не всегда это разумно
Как всегда отличный урок. Спасибо огромное за уроки!
54:30 А что мешает так же сделать с классами?
спасибо за стримм
Большое спасибо! Огромное просто!
26:15...
Каким сочетанием клавиш это было сделано?
(Автоматическая реализация интерфейса в классе)
Или это чисто фишка VS, которую в других средах не найти?
ПС, спасибо за урок, всё было неплохо)
На этот раз было проще уловить, а точнее, здесь мало элементов C# затронуто, и незнакомых лично для меня вообще не было.
2 года прошло, узнал ответ на свой вопрос?
24:55
////
//// Выполнить перемещение.
////
//// Расстояние.
//// Время движения.
Что это?
комментарий
Комментарий - полное описание метода
К комментаторам выше.
Данная схема, т.е. полное описание метода (или другого), будет так же формировать всплывающую подсказку в VS, если ты где-то захочешь вызвать этот метод.
Это особенно заметно при использовании методов стандартной библиотеки, только начинаешь писать, а там уже написана подсказка, что метод делает, какие параметры что обозначают.
После вопроса об одновременном наследовании класса и реализации интерфейса (или интерфейсов) возник вопрос:
Что если в классе-родителе, каким-то магическим образом содержится метод, идентичный по сигнатуре методу, определенному в интерфейсе, но при этом класс-родитель, не реализует интерфейс (который нужно реализовать в классе-наследнике).
А что если класс родитель реализует интерфейс, который так-же необходимо реализовать классом-наследником.
это несложно проверить, но кажется что все должно быть ок, в классе наследнике же реализуется метод для интерфейса через наследование
Вопрос. А зачем тогда нужны абстрактные классы, если мы все можем через интерфейсы реализовать?
Если есть какие либо реализации или поля в интерфейсе, то все они в производных классах будут статичные. А реализации и поля унаследованные от абстрактных классов, для каждого производного экземпляра будет своя версия состояния.
Разные смысловые функции. На один класс можно кинуть несколько интерфейсов.
Кто за шарп комент:шарп.
Кто за c++ коммент c++.
Aboba
Имплементация метода и его интерфейса похожа на простое описание метода этот метод будет и так доступен без интерфейса из объекта этого класса не понимаю в чем здесь фишка ? Может этот метод реализуется водном классе , доступен будет где наследуется этот интерфейс пусть из пустого класса ?
фишка в полиморфизме. Следующий ролик будет как раз с демонстрацией практического применения интерфейсов
Жду с нетерпением . Тупо переписал ваш этот проект из этого ролика сейчас пытаюсь понять принцип работы интерфейса . У вас ролики избыточно длинные трудно перекопировать проект , но все-таки интересно .
Вопрос по наследованию и реализации интерфейсов
25:19 как я понял это наследование интерфейса, верно?
32:10 а тут реализация? из-за того что класс "наследует" более одного интерфейса это называется реализацией?
или же наследование и реализация для интерфейса это одно и тоже? (суть не в сехе работы, а как что называют), а когда интерфейсов больше одного то это уже множественное реализация?
да более 2 наследований называется реализацией!!
На самом деле здесь просто не совсем правильно говорить про наследование интерфейсов. Наследование подразумевает, что ты получаешь логику из предка, а интерфейс не содержит логики. Поэтому корректнее говорить про реализацию интерфейса. Когда ты реализуешь интерфейс ты всего лишь говоришь, что в классе есть такие же члены, как объявленные в интерфейсе. но напрямую интерфейс и класс его реализующий не связаны, интерфейс не передает в класс логику
Спасибо
17:24 C версии c# 8 можно задавать модификаторы доступа перед методом
Это видео записано до выхода версии 8, неужели вы этого не видите?
@@phat80 человек просто проинформировал, в чем проблема?
12:00:00
Нормально, где-то тут я остановился в прошлый раз.
Успехов в продолжении изучения )
В интерфейс можно как-нибудь поместить в объект управления со свойствам второй формы чтобы к нему получить доступ из первой формы или нет ?
можно связать формы через события или можно создать коллекцию форм и обращаться из одной в другую
Менять только свойства второй формы из первой через ее объект можно легко поменять его в событии - одним кликом очень легко . А менять свойства объектов которые находятся на второй форме - трудно , они недоступны из первой формы .
Если два одинаковых свойства связанные одним интерфейсом разных классов , то получив значения первое свойства передаст это значение во второй класс на второе свойства ? У интерфейсов есть объекты ? Я их только-только учу .
большое спасибо
Этот ролик у вас получился лучше и проще чем CLR via C# глава 13 .
так в том и смысл, что этот ролик для начинающих, а clr via c# более сложный )
Вчера я уснул на этом ролике , когда проснулся он еще шел и шел . Я интелектуальнно буксую от таково объема информации .
@@ВалерийВаланчус я тоже уснул и во сне изучил exception, delegate
спасибо
Всегда пожалуйста )
1:02:00 (или как-то так) А в С++ есть же abstract и virtual, который по сути делает множественное наследование классов удобнее, ведь не нужно разделять на классы и интерфейсы, можно просто фигачить. (если я правильно помню)
Это и в с# тоже есть вроде
зАЧЕМ ТАК ДОЛГО???