powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
25 сообщений из 384, страница 11 из 16
Наследование и интерфейсы.
    #39722441
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПросто эксперимент.))) молодца))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722444
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

Только про DI не надо. Издеваешься?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722445
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,

Только про DI не надо. Издеваешься?

А в чём проблема?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722447
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОК.
В сложных я срываю стоп кран и еду на ободах до шиномонтажа.

Тяжелая у Вас работа. У нас разработчикам такого делать не приходится.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722448
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722449
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxPetro123ОК.
В сложных я срываю стоп кран и еду на ободах до шиномонтажа.

Тяжелая у Вас работа. У нас разработчикам такого делать не приходится.new тоже самое
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722450
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.

Какая разница? Этот паттерн ближе всего.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.

Какая разница? Этот паттерн ближе всего.ближе всего у меня топор. Но я тяну руку дальше к миске для кошки чтобы ее покормить.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722452
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом...

Окей. Так вот - лично мне не нравится ...

.

Вот с этого и нужно было начинать. А не с безосновательных утверждений.
Тогда бы спокойно обсудили, что и почему Вам не нравится.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722453
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxВот с этого и нужно было начинать.

Так как бы об этом всю ветку и речь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722455
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тот момент, что любое обсуждение уходит в срач в полемическом задоре - сами видите, публика-с...
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722459
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Весь вопрос ветки в том что нужны default virtual методы.
Остальное от java не отличается.
Я бы не против.....
и обсуждать тут больше нечего.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722493
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.То есть понимать разницу между "реализует" и "наследует реализацию" ты отказываешься.

AddxМне, как пользователю классаВерно, ты не программист, ты пользователь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722504
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyИзначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе.
А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722555
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЕсли весь код твой, то да.
А если ты унаследовался от чужого бинарника, в котором после обновления его версии появился одноименный метод, который уже существует в твоем наследнике, то либо терпеть предупреждения компилятора о перекрытии, либо подавить их через new. Либо отрефакторить код, изменив название своего метода, вызывая приступы анальных болей у тех, кто юзает в виде бинарника твой код.

Вот тут я не понимаю. Переопределение virtual метода имеет смысл, так как ты можешь передать известный тип в чужой бинарник со своей реализацией.

А перекрытие метода через new никуда передать нельзя, чужому бинарнику какбы нас...ть на твоё перекрытие. Соответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? На кой хрен? Что тебе это даст?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722556
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСоответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению?

*к перекрытию
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722560
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вот давай посмотрим, есть такой класс Stream , он используется внутри фреймворка и во многих библиотеках.

И вот, тебе захотелось переопределить метод CopyTo , который ни разу не виртуальный.

Ты такой делаешь свою реализацию new CopyTo(...), и что получаешь? Ничего. Передашь инстанс своего класса-наследника с перекрытием, и никто не вызовет твой метод.

Так почему бы не добавить свой метод MySuperCopyTo и не ипать никому мозг? Просто не понимаю.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722586
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123в коде пробовал?
1. Я смысла не вижу.
2. Интерфейс становится не публичным.
Нет под рукой студии. Завтра.
Выше уже говорилось, что применение EIMI требует отдельных обоснований. Поскольку у него куча своих нюансов.
Допустим, нужно протянуть цепочку наследования EIMI-метода в унаследованный класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
class Foo: Bar, ISpeak
{
  // Error CS0106  The modifier 'virtual' is not valid for this item
  virtual void ISpeak.SayWord()
  {
    Console.WriteLine("Foo.ISpeak.SayWord");
  }
}


- не выйдет (как и public virtual ISpeak...). Ок, в наследнике тоже сделаем EIMI, но с одной оговоркой - в нем надо сначала вызвать EIMI-метод базового класса (стандартная, в общем, штука при реализации переопределенных virtual-методов). Обычный вызов base.SayWord вызовет реализацию SayWord в Bar, а вот такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
class Zot : Foo, ISpeak
{
  void ISpeak.SayWord()
  {
    // Error CS0175  Use of keyword 'base' is not valid in this context
    ((ISpeak)base).SayWord();
  }
}


тоже не прокатит.
Наконец, при необходимости обратиться к EIMI-методу внутри класса, в котором он объявлен, придется постоянно кастовать this к соотв. интерфейсу. А если имеет место быть одновременное наследование интерфейса, и EIMI методов того же интерфейса, то стоит один раз забыть привести тип this - и долгое вылавливание багов и неочевидного поведения гарантировано. Это не говоря о том, что, как и в случае с перекрытием метода, результат вызова метода, одноименного с EIMI, будет зависить от объявленного типа экземпляра, на котором делается вызов.

Агнец за бортомКак в анекдоте - "понять это невозможно, это надо запомнить".
Некоторым людям, имеющим желание разобраться в вопросе, помогает чтение документации.
Агнец за бортомПочему в JAVA я могу
Потому что ява - другой язык. Ваш К.О. Если интересует, почему разработчики C# решили сделать иначе - пишите в Редмонд.
Агнец за бортомА в шарпе я сделаю РОВНО тоже самое, мне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.
Потому что перекрытие не равно переопределению. Потому что если делается перекрытие, нужно представлять себе, чем это чревато. Потому что если делаешь что-то, и не понимаешь, что делаешь, то ССЗБ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Насколько вас понял, а вы все таки профи, в данном топике не следует уповать на: "в каждом наследнике продублирую интерфейс".
ТС сказал что это у него эксперимент)). Ну и пусть забавляется. Я так не делаю и не пишу. В дельфях насколько знаю, нет такого.
Имхо
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722590
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортоммне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.ну дак ты среагировал по другому.
У меня сразу появились претензии к оператору , а у тебя почему то глобальные претензии на 11 страниц.
Не трать энергию понапрасну)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722592
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Ты кстати хотел хакнуть класс без виртуального метода.
В курсе почему намедни ракета упала?
При сборке боковая ступень не входила в замок-шип.
И тогда сборщик загнал её силой. Молотком или чем ещё)).
Дак вот когда ты в наследнике написал метод и имя совпало, студия тебя предупредила про конфликт.
Но ты взял кувалду new и вогнал таки метод на место)).
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722602
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...

А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом.
Слив засчитан.

Вот тебе пара слов, объединенных общим смыслом. Улавливаешь?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722612
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123а у тебя почему то глобальные претензии на 11 страниц.

Я все свои выводы сделал на 4-ой странице.

2 Сон Веры Павловны

Слушай, зачем ты повторяешь одно и то же из страницы в страницу? Знаешь, чего это признак?

Я веду речь о другом.

Тот факт, что класс реализует интерфейс и непосредственно реализует этот интерфейсах в своих методах - не даёт однозначной гарантии, что будучи приведённым к типу интерфейса - будут вызваны именно его методы.

Вот имея на входе только эту информацию - нельзя сделать однозначный вывод об использовании.
Мне это кажется неоднозначным и неудобным.

ВСЁ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722615
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDNclass can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface.

Формально вы правы. Но лишь формально. Это всё равно что вываливать сюда простыни IL-кода, и апеллировать к ним.

Мне интересно, почему вы не включили в цитату следующую прямо за ней фразу

MSDNHowever, the derived class can reimplement the interface members instead of using the inherited implementation.


Формально да - реализует.
Фактически - встаёт вопрос - как реализует.
Наследуя реализацию от базового или ре-имплементируя интерфейс у себя.

Самое простое - отказаться от new в принципе, и больше не забивать себе голову.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722626
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAddxМне, как пользователю классаВерно, ты не программист, ты пользователь.
[/quot]

Увы, все наоборот.
Программист при словах "пользователь класса" и "клиент" представляет вовсе не бабушку за клавиатурой или скучающего дядю в кафешке.
Разумеется, смысл моих постов при этом от Вас ускользает. Жаль.
...
Рейтинг: 0 / 0
25 сообщений из 384, страница 11 из 16
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]