powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
25 сообщений из 25, страница 1 из 1
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016035
Есть класс-родитель с полями и private полем. Есть класс-наследник.
1. И поля родителя, и поля наследника объединяются в один экземпляр? Т.е. одно адресное пространство, доступ к полям родителя, как и к своим (this.Parentfield)?
2. private поле родителя в класс-наследник не попадает? Т.е. в экземплярах-наследниках его не будет?
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016037
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космоса,

будет, будет. Только ты его не увидишь
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016052
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаЕсть класс-родитель с полями и private полем. Есть класс-наследник.
1. И поля родителя, и поля наследника объединяются в один экземпляр? Т.е. одно адресное пространство, доступ к полям родителя, как и к своим (this.Parentfield)?
2. private поле родителя в класс-наследник не попадает? Т.е. в экземплярах-наследниках его не будет?
для наследников используй модификатор protected.
К свойствам и полям родителей обращаются не this., а base.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016078
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesК свойствам и полям родителей обращаются не this., а base.
В случае protected members можно и this, и base - это эквивалентно. Разница есть только для code reviewers.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016101
Pallarisлетатель космоса,

будет, будет. Только ты его не увидишь
Ааа. Методы родителя могут использовать private поле родителя, поэтому. Чтобы не поломать работу таких методов.

Сон Веры ПавловныRoman MejtesК свойствам и полям родителей обращаются не this., а base.
В случае protected members можно и this, и base - это эквивалентно. Разница есть только для code reviewers.
protected members - это только поля, или ещё и все остальное, что в классе-родителе реализовано?
Это только к protected полям? А к public?
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016129
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаprotected members - это только поля, или ещё и все остальное, что в классе-родителе реализовано?
Всё.
летатель космосаЭто только к protected полям? А к public?
Ко всему, что видно в наследнике. Квалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно (на что, собственно, решарпер выдает соответствующее упоминание).
А вообще - советую читать книги. Для начала - Гради Буч, "Объектно-ориентированный анализ и проектирование", а потом - Троельсена и Рихтера.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016142
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныКвалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно
случаев поболее будет, да ладно
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016200
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилслучаев поболее будет, да ладно
Да чего уж там, пишите, какие это случаи.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39016205
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
base - доступ к скрытому методу/полю/свойству базового класса
this - доступ к методу/полю/свойству, скрытому локальной переменной
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39018649
Сон Веры ПавловныКо всему, что видно в наследнике. Квалификатор base нужен для вызова родительских конструкторов, и родительских виртуальных методов, переопределенных в унаследованном классе. Во всех остальных случаях даже использование this и base избыточно (на что, собственно, решарпер выдает соответствующее упоминание).

Изопропилbase - доступ к скрытому методу/полю/свойству базового класса
this - доступ к методу/полю/свойству, скрытому локальной переменной

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class Animal 
{
  field;
  fieldAnim;

  methodAnim(this);
  method(this);
}

class Dog: Animal
{
  field;
  fieldDog;

  methodDog(this);
  method(this);
}



1. Экземпляр класса Dog будет состоять из экземпляра себя, и экземпляра класса Animation. this - указатель на экземпляр класса Dog, а base - указатель на экземпляр класса-родителя?
2. В методе наследника мы можем написать и base.fieldParent; и base.method(); С this - так же. То есть получается они указывают и на адрес экземпляра, и на адрес класса (методов и статик полей)?

Сон Веры ПавловныА вообще - советую читать книги. Для начала - Гради Буч, "Объектно-ориентированный анализ и проектирование", а потом - Троельсена и Рихтера.
Йок!
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39018675
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космоса
1. Экземпляр класса Dog будет состоять из экземпляра себя, и экземпляра класса Animation. this - указатель на экземпляр класса Dog, а base - указатель на экземпляр класса-родителя?
2. В методе наследника мы можем написать и base.fieldParent; и base.method(); С this - так же. То есть получается они указывают и на адрес экземпляра, и на адрес класса (методов и статик полей)?


Я хочу это развидеть...
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39018728
Pallaris, не хотел никого травмировать:) Написал как смог. Смысл такой: экземпляр-наследник - как блок из двух кубиков: кубик полей, полученных в наследство, и кубик уже со своими полями. Кубик в метафоре - адресное пространство. И вот base - указывает на кубик унаследованных полей, а this - на кубик наследника. Так нормально или тоже травмоопасно?
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39018785
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
base и this указывают на одно и то же, только по метаданным типов base и this компилятор понимает, что и откуда брать.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39019012
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris, строго говоря base никуда не указывает потому что не мы можем написать
Код: c#
1.
object o = base;


Компилятор преобразует выражения вида base.Field в ((ИмяБазовогоКласса)this).Field. летатель космоса это ответ на твой вопрос про "кубики". Поля базового типа являются неотемлемой частью дочернего.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39019160
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileПоля базового типа являются неотемлемой частью дочернего.
даже в случае сокрытия
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39019286
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisbase и this указывают на одно и то же, только по метаданным типов base и this компилятор понимает, что и откуда брать.компилятор понимает, что откуда брать, как раз по словам base и this.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39019312
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаНаписал как смог. Смысл такой: экземпляр-наследникДа снова фигню написал. Экземпляр класса один, это объект, набор байтов в памяти. А родитель-наследник это категории исходного кода.

летатель космосаКубик в метафоре - адресное пространство. Сойдет.

летатель космосаИ вот base - указывает на кубик унаследованных полей, а this - на кубик наследника.В памяти они "указывают" (с оговоркой про base 17951779 ) на одно и то же (начало объекта), в исходном коде на разное. А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39021116
Правильно ли я понял после всего, что вы мне разъяснили:
base нужен так же, как и this - в случае, если есть перекрывающие локальные члены (поля, методы):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
//в методе есть локальная переменная с именем field, совпадающая с полем класса, которое нам нужно
this.field;

//не уверен, имеет ли смысл так писать
this.Method();

//в методе есть локальная переменная field, совпадающая с полем класса-родителя, которое нам нужно
base.field;


//в наследнике есть метод с такой же сигнатурой, что и в родителе, а нужно вызвать метод родителя
base.Method();


После компиляции кода base'а не существует.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39021123
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
base используется для обращения к полям класса-родителя. this используется для обращения к полям текущего класса. оба эти слова использовать не обязательно, если названия всех полей уникальны.

а после компиляции вообще не остается ни base ни this ни даже классов.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39021430
Antonariy, понятно. А с интерфейсами в чем отличие? Прочитал, что из себя представляет сборка. Это IL-код, ресурсы и метаданные. Получается, виртуальная машина работает только с IL-кодом и ресурсами, а метаданные не использует для соответствия типов, например?
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39021498
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаAntonariy, понятно. А с интерфейсами в чем отличие?Не понял вопроса. Отличие чего от чего? летатель космосаПрочитал, что из себя представляет сборка. Это IL-код, ресурсы и метаданные. Получается, виртуальная машина работает только с IL-кодом и ресурсами, а метаданные не использует для соответствия типов, например?Потрохов .net-кода я не знаю, а здесь я описывал принцип работы интерфейсов в COM-потрохах: 17547349 , может будет чем полезно.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39022846
[quot Antonariy]летатель космосаAntonariy, понятно. А с интерфейсами в чем отличие?Не понял вопроса. Отличие чего от чего?
Вы написали, что "А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти". Можете разъяснить? Прочитал тему, на которую вы дали ссылку, но там к vb вроде только применительно.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39022852
AntonariyНе понял вопроса. Отличие чего от чего?
:)
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39022866
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилbase - доступ к скрытому методу/полю/свойству базового класса
this - доступ к методу/полю/свойству, скрытому локальной переменнойthis - вызов расширяющего метода для текущего объекта.
...
Рейтинг: 0 / 0
О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
    #39022955
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
летатель космосаВы написали, что "А вот если объект состоит из нескольких интерфейсов, то интерфейсные переменные как раз и указывают на начало каждого "кубика" полей интерфейса в памяти". Можете разъяснить?именно эта фраза и разъясняется по ссылке

летатель космосаПрочитал тему, на которую вы дали ссылку, но там к vb вроде только применительно.там применительно к технологии COM, а под нее можно писать и на шарпе. это будет почти тот же исходный код, что и обычно, но компилироваться он будет в другой формат.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / О наследовании: все поля - в одном экземпляре? private поля + в экземпляр-наследник?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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