|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Есть класс-родитель с полями и private полем. Есть класс-наследник. 1. И поля родителя, и поля наследника объединяются в один экземпляр? Т.е. одно адресное пространство, доступ к полям родителя, как и к своим (this.Parentfield)? 2. private поле родителя в класс-наследник не попадает? Т.е. в экземплярах-наследниках его не будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2015, 21:40 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космоса, будет, будет. Только ты его не увидишь ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2015, 21:42 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космосаЕсть класс-родитель с полями и private полем. Есть класс-наследник. 1. И поля родителя, и поля наследника объединяются в один экземпляр? Т.е. одно адресное пространство, доступ к полям родителя, как и к своим (this.Parentfield)? 2. private поле родителя в класс-наследник не попадает? Т.е. в экземплярах-наследниках его не будет? для наследников используй модификатор protected. К свойствам и полям родителей обращаются не this., а base. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2015, 23:06 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Roman MejtesК свойствам и полям родителей обращаются не this., а base. В случае protected members можно и this, и base - это эквивалентно. Разница есть только для code reviewers. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 04:24 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Pallarisлетатель космоса, будет, будет. Только ты его не увидишь Ааа. Методы родителя могут использовать private поле родителя, поэтому. Чтобы не поломать работу таких методов. Сон Веры ПавловныRoman MejtesК свойствам и полям родителей обращаются не this., а base. В случае protected members можно и this, и base - это эквивалентно. Разница есть только для code reviewers. protected members - это только поля, или ещё и все остальное, что в классе-родителе реализовано? Это только к protected полям? А к public? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 10:30 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космосаprotected members - это только поля, или ещё и все остальное, что в классе-родителе реализовано? Всё. летатель космосаЭто только к protected полям? А к public? Ко всему, что видно в наследнике. Квалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно (на что, собственно, решарпер выдает соответствующее упоминание). А вообще - советую читать книги. Для начала - Гради Буч, "Объектно-ориентированный анализ и проектирование", а потом - Троельсена и Рихтера. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 13:19 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныКвалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно случаев поболее будет, да ладно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 15:13 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Изопропилслучаев поболее будет, да ладно Да чего уж там, пишите, какие это случаи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 19:15 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
base - доступ к скрытому методу/полю/свойству базового класса this - доступ к методу/полю/свойству, скрытому локальной переменной ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 19:36 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныКо всему, что видно в наследнике. Квалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно (на что, собственно, решарпер выдает соответствующее упоминание). Изопропилbase - доступ к скрытому методу/полю/свойству базового класса this - доступ к методу/полю/свойству, скрытому локальной переменной Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
1. Экземпляр класса Dog будет состоять из экземпляра себя, и экземпляра класса Animation. this - указатель на экземпляр класса Dog, а base - указатель на экземпляр класса-родителя? 2. В методе наследника мы можем написать и base.fieldParent; и base.method(); С this - так же. То есть получается они указывают и на адрес экземпляра, и на адрес класса (методов и статик полей)? Сон Веры ПавловныА вообще - советую читать книги. Для начала - Гради Буч, "Объектно-ориентированный анализ и проектирование", а потом - Троельсена и Рихтера. Йок! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2015, 14:05 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космоса 1. Экземпляр класса Dog будет состоять из экземпляра себя, и экземпляра класса Animation. this - указатель на экземпляр класса Dog, а base - указатель на экземпляр класса-родителя? 2. В методе наследника мы можем написать и base.fieldParent; и base.method(); С this - так же. То есть получается они указывают и на адрес экземпляра, и на адрес класса (методов и статик полей)? Я хочу это развидеть... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2015, 14:20 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Pallaris, не хотел никого травмировать:) Написал как смог. Смысл такой: экземпляр-наследник - как блок из двух кубиков: кубик полей, полученных в наследство, и кубик уже со своими полями. Кубик в метафоре - адресное пространство. И вот base - указывает на кубик унаследованных полей, а this - на кубик наследника. Так нормально или тоже травмоопасно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2015, 14:51 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
base и this указывают на одно и то же, только по метаданным типов base и this компилятор понимает, что и откуда брать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2015, 15:33 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Pallaris, строго говоря base никуда не указывает потому что не мы можем написать Код: c# 1.
Компилятор преобразует выражения вида base.Field в ((ИмяБазовогоКласса)this).Field. летатель космоса это ответ на твой вопрос про "кубики". Поля базового типа являются неотемлемой частью дочернего. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2015, 18:42 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
bazileПоля базового типа являются неотемлемой частью дочернего. даже в случае сокрытия ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2015, 02:11 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Pallarisbase и this указывают на одно и то же, только по метаданным типов base и this компилятор понимает, что и откуда брать.компилятор понимает, что откуда брать, как раз по словам base и this. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2015, 10:15 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космосаНаписал как смог. Смысл такой: экземпляр-наследникДа снова фигню написал. Экземпляр класса один, это объект, набор байтов в памяти. А родитель-наследник это категории исходного кода. летатель космосаКубик в метафоре - адресное пространство. Сойдет. летатель космосаИ вот base - указывает на кубик унаследованных полей, а this - на кубик наследника.В памяти они "указывают" (с оговоркой про base 17951779 ) на одно и то же (начало объекта), в исходном коде на разное. А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2015, 10:46 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Правильно ли я понял после всего, что вы мне разъяснили: base нужен так же, как и this - в случае, если есть перекрывающие локальные члены (поля, методы): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
После компиляции кода base'а не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2015, 10:34 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
base используется для обращения к полям класса-родителя. this используется для обращения к полям текущего класса. оба эти слова использовать не обязательно, если названия всех полей уникальны. а после компиляции вообще не остается ни base ни this ни даже классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2015, 11:10 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Antonariy, понятно. А с интерфейсами в чем отличие? Прочитал, что из себя представляет сборка. Это IL-код, ресурсы и метаданные. Получается, виртуальная машина работает только с IL-кодом и ресурсами, а метаданные не использует для соответствия типов, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2015, 09:38 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космосаAntonariy, понятно. А с интерфейсами в чем отличие?Не понял вопроса. Отличие чего от чего? летатель космосаПрочитал, что из себя представляет сборка. Это IL-код, ресурсы и метаданные. Получается, виртуальная машина работает только с IL-кодом и ресурсами, а метаданные не использует для соответствия типов, например?Потрохов .net-кода я не знаю, а здесь я описывал принцип работы интерфейсов в COM-потрохах: 17547349 , может будет чем полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2015, 10:51 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
[quot Antonariy]летатель космосаAntonariy, понятно. А с интерфейсами в чем отличие?Не понял вопроса. Отличие чего от чего? Вы написали, что "А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти". Можете разъяснить? Прочитал тему, на которую вы дали ссылку, но там к vb вроде только применительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 18:04 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
AntonariyНе понял вопроса. Отличие чего от чего? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 18:08 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
Изопропилbase - доступ к скрытому методу/полю/свойству базового класса this - доступ к методу/полю/свойству, скрытому локальной переменнойthis - вызов расширяющего метода для текущего объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 18:26 |
|
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
|
|||
---|---|---|---|
#18+
летатель космосаВы написали, что "А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти". Можете разъяснить?именно эта фраза и разъясняется по ссылке летатель космосаПрочитал тему, на которую вы дали ссылку, но там к vb вроде только применительно.там применительно к технологии COM, а под нее можно писать и на шарпе. это будет почти тот же исходный код, что и обычно, но компилироваться он будет в другой формат. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2015, 22:00 |
|
|
start [/forum/topic.php?fid=20&msg=39021430&tid=1401305]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 482ms |
0 / 0 |