powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Подскажите по наследованию
25 сообщений из 36, страница 1 из 2
Подскажите по наследованию
    #40026504
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
   public class A
        {
            public virtual void Print1()
            {
                Console.WriteLine("A.print1");
            }
           
        }
        public class B : A
        {
            public /*override*/ void Print1()
            {
                Console.WriteLine("B.print1");
            }
        }


        public static void Main(string[] args)
        {           
            A b = new B();
        
            b.Print1();         
        }



Почему выводится A.print1? Ссылка же ведет на тип данных B
Если перегрузка, то ищется метод у текущего объекта
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026512
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
Почему выводится A.print1? Ссылка же ведет на тип данных B

У хВоста спроси - он наследование любит
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026514
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview,

Ты, похоже, на ворнинги вообще не смотришь? Потому что ворнинг CS0114 должен быть. А так-то такие вопросы ну уж совсем джунам на интервью обычно задают.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026565
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
Почему выводится A.print1?
Потому что у тебя b имеет тип A. Учебник прочти.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026684
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
listtoview
Почему выводится A.print1?
Потому что у тебя b имеет тип A. Учебник прочти.

нет
тип переменной b является B
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026704
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
Shocker.Pro
пропущено...
Потому что у тебя b имеет тип A. Учебник прочти.

нет
тип переменной b является B
ты путаешь переменную и экземпляр
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026709
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
Shocker.Pro
пропущено...
Потому что у тебя b имеет тип A. Учебник прочти.

нет
тип переменной b является B

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

Например я не хочу что бы животных плодили, а людей пожалуйста
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026879
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тут странного. Если кто-то свойство в классе сделал приватным, он понимает, что делать возможность его публичную модификацию опасно (например из-за потери консистентности). А ты хочешь взять и разрушить базовый класс.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026887
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
А что тут странного. Если кто-то свойство в классе сделал приватным, он понимает, что делать возможность его публичную модификацию опасно (например из-за потери консистентности). А ты хочешь взять и разрушить базовый класс.

рефлекшен выручит)
ну да, это я чет подтупливаю, вопрос снят
просто когда virtual и override все просто, а вот с перегрузкой да еще и new плаваю
ушел читать
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026894
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
еще и new

"Еще и new" это говнокод. И "virtual", по-хорошему, тоже быть нигде не должно. Должно быть либо "abstract", либо "override sealed". Потому что перегрузка неабстрактных методов, за редким исключением, это тоже говнокод.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026945
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Потому что перегрузка неабстрактных методов, за редким исключением, это тоже говнокод.


Чего это? )))

Целая канистра аксимоматичных утверждений, как выясняется ни на чём не основанных ))
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026960
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Чего это? )))

Это МЕДИАТОР!
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026963
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Чего это? )))

Это МЕДИАТОР!


Да откуда ты эти странные идеи вообще достаёшь? :)
Ты бы к ним аттачил хоть парочку обоснований, хотя бы для себя.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026965
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
хоть парочку обоснований

Можно подумать, что тебя интересуют обоснования, или, что ты хотя бы их читаешь :))
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40026975
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
хоть парочку обоснований

Можно подумать, что тебя интересуют обоснования, или, что ты хотя бы их читаешь :))


Конечно интересуют, более того, многое мне близко, проходил и даже так когда-то думал )

Разве плохо, иметь чёткое обоснование для тех или иных утверждений.

Некоторые вещи намеренно обозначают как "абсолютное зло" (например, GOTO), чтобы выжечь практику использование совсем, на корню. Но это вовсе не означает, что тот же GOTO это абсолютное зло ))
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027014
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
просто когда virtual и override все просто, а вот с перегрузкой да еще и new плаваю

Еще один повод перейти в java - там, вроде бы, все виртуальное :))
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027051
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Чего это? )))

Это МЕДИАТОР!

В некоторых случаях (как, например, с наркотиками) практичней что-то запретить, чем объяснять каждому.

Вкратце, перегрузка это всегда способ нагамнюжить при неправильном использовании, причем, что важнее, нагамнюжить не в свой код (это ладно бы), а в чужой. Т.ч. сто раз надо продумать и просчитать, прежде чем давать возможность кому угодно что-то перегружать по своим хотелкам - чаще практичней сделать sealed.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027069
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Некоторые вещи намеренно обозначают как "абсолютное зло" (например, GOTO), чтобы выжечь практику использование совсем, на корню. Но это вовсе не означает, что тот же GOTO это абсолютное зло ))

Смысла нет обсуждать, ведь у вас в ПХП без goto все равно ведь никак?
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027668
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
listtoview,

Ты, похоже, на ворнинги вообще не смотришь? Потому что ворнинг CS0114 должен быть. А так-то такие вопросы ну уж совсем джунам на интервью обычно задают.

CS0108
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027730
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, подскажите, где может понадобиться сокрытие?
Код: 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 class Cat
        {
            public void Speak()
            {
                Console.WriteLine("Cat.meow");
            }
           
        } 
        public class Tiger : Cat
        {                                     
            public new void Speak()
            {
                Console.WriteLine("Tiger.rrr");
            }
        }


        public static void Main(string[] args)
        {
            Cat a = new Cat();
            Cat b = new Tiger();
            a.Speak();
            b.Speak();

            //Console.WriteLine(b.GetType().Name);                     
        }


на мой взгляд конкретный тигр должен рычать даж если мы на него смотрим как на кошку. При переопределении так и происходит. А вот зачем нужно впринципе сокрытие непонятно. Поясните пожалуйста. Спасибо.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027736
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
listtoview
А вот зачем нужно впринципе сокрытие непонятно
нигде, тебе же сказали. Не пользуйся
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027738
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сокрытие может возникнуть случайно, если ты добавил метод к унаследованному классу, а потом производитель базового класса добавил метод с такой же сигнатурой. Тогда ты можешь добавить new чтобы подавить варнинг, но лучше по возможности отрефакторить свой метод.
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027840
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Сокрытие может возникнуть случайно, если ты добавил метод к унаследованному классу, а потом производитель базового класса добавил метод с такой же сигнатурой. Тогда ты можешь добавить new чтобы подавить варнинг, но лучше по возможности отрефакторить свой метод.

ок
...
Рейтинг: 0 / 0
Подскажите по наследованию
    #40027849
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воощем когда VMT, то все хорошо и метод определяется по типу времени компиляции
во всех остальных(сокрытие, перегрузка) по типу времени выполнения
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Подскажите по наследованию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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