|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Есть класс A и его наследник B. Чем отличается объект B b=new B(); от A b=new B(); ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:10 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Есть класс A и его наследник B. Чем отличается объект B b=new B(); от A b=new B(); отличаются только типом указателя ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 19:52 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
при перекрытии виртуальных методов через модификатор new метод будет вызываться только в соответствии с объявленным (не фактическим) типом ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 22:41 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Есть класс A и его наследник B. Чем отличается объект B b=new B(); от A b=new B(); Примерно тем же, чем отличается "объект" B b=new B(); от object b=new B(); ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2019, 22:42 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Есть класс A и его наследник B. Чем отличается объект B b=new B(); от A b=new B(); ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 10:43 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Roman Mejtesотличаются только типом указателя Сон Веры Павловныпри перекрытии виртуальных методов через модификатор new метод будет вызываться только в соответствии с объявленным (не фактическим) типомсовершенно правильные и совершенно бесполезные ответы для того, кто задает вопрос по основам ООП :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 12:56 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Antonariy Roman Mejtesотличаются только типом указателя Сон Веры Павловныпри перекрытии виртуальных методов через модификатор new метод будет вызываться только в соответствии с объявленным (не фактическим) типомсовершенно правильные и совершенно бесполезные ответы для того, кто задает вопрос по основам ООП :) Очень даже полезные. Особенно про перекрытие виртуальных методов, Сон Веры Павловны , спасибо. Других отличий пока не написано. Antonariy Вакан Есть класс A и его наследник B. Чем отличается объект B b=new B(); от A b=new B(); Это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 14:04 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Особенно про перекрытие виртуальных методов Не только виртуальных, с виртуальными я слегка ошибся - вообще любых перекрытых методов (ключевого слова new при перекрытии может не быть, оно лишь подавляет предупреждение компилятора, и обязательным для перекрытия не является). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 14:30 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Вакан Особенно про перекрытие виртуальных методов Не только виртуальных, с виртуальными я слегка ошибся - вообще любых перекрытых методов (ключевого слова new при перекрытии может не быть, оно лишь подавляет предупреждение компилятора, и обязательным для перекрытия не является). А также полей и свойств. Кнопочки Спасибо на этом форуме нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 15:01 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Это не так. Отладчик показывает реальный класс, на него не ориентируйся. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 15:36 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан А также полей и свойств. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 15:36 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Shocker.Pro Вакан Это не так. Отладчик показывает реальный класс, на него не ориентируйся. Понятно, спасибо. А в каких случаях есть выгода от A b=new B(); вместо B b=new B(); Т.е. почему нельзя было сделать синтаксис просто B b=new();, а не new B();? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 15:49 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Когда у тебя есть зоопарк: A[] Класс А - животное. Класс B:A - медведь. Класс С:А - слон. На пальцах понятно получилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:11 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Shocker.Pro, непонятно, чем в случае с животными лучше A b= new B();A c= new C();, чем B b= new B();C c= new C(); и, соответственно, почему невозможен такой синтаксис B b=new(); C c=new(); ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:18 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Да блин. Тем, что их можно поместить в массив A[] https://ru.wikipedia.org/wiki/Принцип_подстановки_Барбары_Лисков ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:22 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Shocker.Pro, и так можно их можно поместить в массив A[]. Код: c# 1. 2. 3.
В чем разница? И при чем тут блин. Не хотите - не отвечайте. Я не вынуждаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:28 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
В том, что ты можешь использовать массив А[] невзирая на то, что внутри разнотипные классы, которые друг к другу не приводятся. Прочитай пожалуйста учебник, в частности раздел "приведение типов", форум - не учебник. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 16:31 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан А в каких случаях есть выгода от A b=new B(); вместо B b=new B(); Т.е. почему нельзя было сделать синтаксис просто B b=new();, а не new B();? Трудно даже придумать такие случаи... Бывает: Код: c# 1. 2. 3. 4. 5.
но вот выгоду от A b=new B() трудно увидеть... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 22:42 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Shocker.Pro В том, что ты можешь использовать массив А[] невзирая на то, что внутри разнотипные классы, которые друг к другу не приводятся. Прочитай пожалуйста учебник, в частности раздел "приведение типов", форум - не учебник. Учебник уже прочитал, приведение типов знаю. Ты, если есть желание, ответь на заданные вопросы https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1319553&msg=22024002 , а в философских ответах не нуждаюсь. LR Вакан А в каких случаях есть выгода от A b=new B(); вместо B b=new B(); Т.е. почему нельзя было сделать синтаксис просто B b=new();, а не new B();? Трудно даже придумать такие случаи... Бывает: Код: c# 1. 2. 3. 4. 5.
но вот выгоду от A b=new B() трудно увидеть... Если написать такой код, то в дальнейшем без приведения можно использовать только члены А. А если в дальнейшем в каком-нибудь методе использовать проверку is, as и приведение конкретно к В или С, то проще сразу создавать В в=new B(), С с= new C() и передавать их в метод принимающий А. Т.е. пока от A b=new B(); выгоды нет. Хотя, пример хороший и, вероятно, можно придумать пользу от такой инициализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2019, 23:12 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6.
Поищи в доках разницу между "run-time type" и "compile-time type" - в них и разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 14:28 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан Shocker.Pro, непонятно, чем в случае с животными лучше A b= new B();A c= new C();, чем B b= new B();C c= new C(); и, соответственно, почему невозможен такой синтаксис B b=new(); C c=new(); Есть такая штука - полиморфизм подтипов. Например в .NET есть куча методов, которые в качестве параметра принимают Stream и ты можешь передать им любого наследника и они будут работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 15:13 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
fkthat Код: c# 1. 2. 3. 4. 5. 6.
И что? ЕвгенийВ Вакан Shocker.Pro, непонятно, чем в случае с животными лучше A b= new B();A c= new C();, чем B b= new B();C c= new C(); и, соответственно, почему невозможен такой синтаксис B b=new(); C c=new(); Есть такая штука - полиморфизм подтипов. Например в .NET есть куча методов, которые в качестве параметра принимают Stream и ты можешь передать им любого наследника и они будут работать. Совершенно верно. И что? Вы на какой вопрос отвечаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2019, 21:19 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
Вакан, Интересно, откуда вообще возник такой вопрос? Чем отличается объект B b=new B(); от A b=new B() Если такое (A b=new B()) где-то встречается в коде, единственным логическим объяснением может быть что это просто неподправленный фрагмент вследствие copy-paste? И тогда, кстати, впоминаются баталии тут на форуме по поводу того, стоит ли использовать var вместо точного указания типа (очевидно, var улучшает технологию copy-paste))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 01:50 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
ВаканОчень даже полезные. Это вам так кажется. Свойство человеческой психики таково, что она склонна принимать на веру наукообразные объяснения без критической оценки и попадает в иллюзию, будто все стало понятно. А на самом деле нет, просто слова запомнились на уровне рефлексов, как у попугаев, без привязки к практическому опыту, то есть без настоящего понимания. И это прекрасно видно дальше по тексту - вы не догоняете элементарные примеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 16:20 |
|
Чем отличаются инициализации классов A b = new B(); от B b = new B();
|
|||
---|---|---|---|
#18+
LR Если такое (A b=new B()) где-то встречается в коде, единственным логическим объяснением может быть что это просто неподправленный фрагмент вследствие copy-paste? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 16:25 |
|
|
start [/forum/topic.php?fid=20&fpage=14&tid=1398704]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 163ms |
0 / 0 |