powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
25 сообщений из 384, страница 6 из 16
Наследование и интерфейсы.
    #39720910
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМожно пояснить? Поголовный DI?
hVosttАгнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса?

Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected .

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

Возьмем твой, например, класс DBCommand, в нем нет метода OpenXmlReader. Ты унаследовал собственный класс MyCommand от DBCommand, сделал метод OpenXmlReader, скомпилировал собственную библиотеку доступа к данным и отдал разработчикам. Прошел год, разработчики наколбасили кода, использующего MyCommand.OpenXmlReader, и тут выходит обновление фреймворка, в котором у DBCommand появился метод OpenXmlReader. Что делает твой проект? Начинает предупреждать: "MyCommand.OpenXmlReader()" скрывает наследуемый член "DBCommand.OpenXmlReader()". Если скрытие было намеренным, используйте ключевое слово new.

Я уже и забыл, что одноименные методы можно совершенно свободно использовать, и методы потомка перекрывают методы родителя. И как раз в этом случае компилятор предупреждает, чего ТСу от него так не хватало.

И Сон Веры Павловны правильно сказал - new используется лишь для подавления этого предупреждения.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720921
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
наследник наследует, дурня ты кусок.
Что это значит, умника щепотка?

Реализация метода B в наследнике полностью своя, метода A унаследованная.
Как ты трактуешь такую ситуацию, когда половина реализации своя, а половина от базового класса?Так и трактую - половина унаследована, половина переопределена.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720925
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttМожно пояснить? Поголовный DI?
hVosttпропущено...


Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected .

Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно.
hVosttНадо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод.
Это матьево железобетонный факт.

И при чём тут new?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720928
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пля.... вы что про new для переопределения метода? ну ё-моё....

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

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

Что я слышу... o_O
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720939
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПерекрытие метода это вообще баг языка.
Добавили видимо для болванов, не осиливших ни ООП, ни архитектурных приёмов.
Да, кстати, в той же яве такая штука невозможна. Если уж запечатали метод final'ом, то всё, приехали. А у нас и sealed-методы перекрывай, сколько влезет.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомhVosttПерекрытие метода это вообще баг языка.

Что я слышу... o_Oя тоже две страницы тупил что за new))))))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720950
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрошел год, разработчики наколбасили кодаобычное дело. Перколбасят.
DevExpress конвертеры выпускает. В java deprecated пометка будет 3 года висеть перед глазами. И т. д.
Тут же сборки и версии сборок в шарпе для этого.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720995
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttПля.... вы что про new для переопределения метода? ну ё-моё....
Ну не про вызов же конструктора. Выше употреблялся термин "перекрытие", но для краткости, и поскольку вся эта дискуссия про перекрытие, местами использовался new.

Ну... блин.. перекрытие вообще не надо обсуждать. За использование new для перекрытия надо бить. БОльно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721002
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721006
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?

А у тебя мнение не поменялось?

Реализует или нет?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721020
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомRoman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?

А у тебя мнение не поменялось?

Реализует или нет?провокатор))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721048
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
using System;

public interface IFoo
{
    void A();
}

public class ClassA : IFoo
{
    void IFoo.A()
    {
        Console.Write("S");
    }

    protected void InvokeA(Type type)
    {
        var map = type.GetInterfaceMap(typeof(IFoo));
        map.TargetMethods[0].Invoke(this, null);
    }
}

public class ClassB : ClassA, IFoo
{
    void IFoo.A()
    {
        Console.Write("A");
    }

    public virtual void A()
    {
        InvokeA(typeof(ClassA));
        InvokeA(typeof(ClassB));
        Console.Write("M");
    }
}

public class ClassC : ClassB, IFoo
{
    void IFoo.A()
    {
        Console.Write(" ");
        Console.Write("D");
    }

    public override void A()
    {
        base.A();
        InvokeA(typeof(ClassC));
        Console.Write("U");
    }
}

public sealed class ClassD : ClassC, IFoo
{
    void IFoo.A()
    {
        base.A();
        Console.Write("R");
    }

    public override void A()
    {
        ((IFoo)this).A();
        Console.Write("A");
        B();
    }

    public void B()
    {
        Console.Write("K");
    }
}


class Program
{
    static void Main(string[] args)
    {
        var classD = new ClassD();
        classD.A();
        Console.ReadKey();
    }
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721079
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721088
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosФаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html

Воу воу, да ты еретик! ООП же #$)*$#
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721092
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721096
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов

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

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


Более того, код ниже прекрасно компилируется и выполняется!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
   static void Main(string[] args)
        {

            var c1 = new C1();
            var i1 = c1 as I1;
            i1?.M1();
            Console.ReadLine();
        }

        public interface I1
        {
            void M1();
        }

        public class C1
        {
            public new void M1()
            {
                Console.WriteLine("sql.ru");
            }
        }
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

отэтот тож компилируется и выполняется

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
        public static void Main(string[] args)
        {

            var c1 = new C1();
            var i1 = c1 as IMuhahahahah;
            i1?.VseRabotaet();
            Console.ReadLine();
        }

        public interface I1
        {
            void M1();
        }
	
	public interface IMuhahahahah
        {
            void VseRabotaet();
        }

        public class C1
        {
            public new void M1()
            {
                Console.WriteLine("sql.ru");
            }
        }
...
Рейтинг: 0 / 0
25 сообщений из 384, страница 6 из 16
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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