powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Наследование
9 сообщений из 9, страница 1 из 1
Наследование
    #34558689
Интересно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Вопрос к тем кто понимает в наследовании =)
К примеру есть класс1 в нем два поля одно из них private и один метод public который складывает два числа. Далее наследуем от этого класса , класс2. Происходит ли копирование членов класса1 в класс2, или просто создаются ссылки на эти члены, но физически они будут нах в классе1.Также если обратиться в потомке к методу из класса 1 то не произойдет ли ошибка т.к. в классе1 одно поле private.

Всем спасибо кто посмотрит и ответит.
...
Рейтинг: 0 / 0
Наследование
    #34559081
papuas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если обратиться к публик методу, то ошибки не будет. Для чего же еще открытые члены?
...
Рейтинг: 0 / 0
Наследование
    #34559251
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
privatы не доступны нигде кроме как в самом классе
копирования не происходит
Хотя многие вещи зависят от реализации. лучше спрашивать по конкретному яп
...
Рейтинг: 0 / 0
Наследование
    #34559266
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно wrote:

> Здравствуйте.
> Вопрос к тем кто понимает в наследовании =)
> К примеру есть класс1 в нем два поля одно из них private и один метод
> public который складывает два числа. Далее наследуем от этого класса ,
> класс2. Происходит ли копирование членов класса1 в класс2, или просто
> создаются ссылки на эти члены, но физически они будут нах в классе1.Также
> если обратиться в потомке к методу из класса 1 то не произойдет ли ошибка
> т.к. в классе1 одно поле private.
>
> Всем спасибо кто посмотрит и ответит.
(к слову) Язык то какой? :)
Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных
класса "A", даже если они недоступны (запихнуты в private). Это справедливо, как минимум, для C++/Delphi.
Кроме этого, экземпляр класса будет содержать в себе таблицу виртуальных методов (в Delphi - ещё и таблицу
динамических, насколько я помню).
В потомке можно обращаться к методам базового класса. Можно присвоить экземпляру класса "A" экземпляр
класса "B", и т.д.

Насчет "копирования". Есть экземпляр класса. Как вы себе представляете в нем ссылки на поля
базового класса? Для этого нужно создать ещё один экземпляр, так ведь? :)

>но физически они будут нах
???
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Наследование
    #34559774
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных
класса "A", даже если они недоступны (запихнуты в private). Это справедливо, как минимум, для C++/Delphi.

Насчет "копирования". Есть экземпляр класса. Как вы себе представляете в нем ссылки на поля
базового класса? Для этого нужно создать ещё один экземпляр, так ведь? :)

Наследник использует унаследованные поля, но содержит их базовый класс.
http://valera.asf.ru/cpp/book/c17.shtml
авторstatic vector<string> *_text_file;
Создается ли при порождении класса NameQuery второй экземпляр _text_file, уникальный именно для него? Нет. Все объекты производного класса ссылаются на тот же самый, единственный разделяемый статический член. Сколько бы ни было производных классов, существует лишь один экземпляр _text_file. Можно обратиться к нему через объект производного класса с помощью синтаксиса доступа:...
там же кстати есть про про друзей (friend), получающих доступ к private - членам.
...
Рейтинг: 0 / 0
Наследование
    #34559775
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Если от класса "A" наследуется класс "B", то экземпляр класса "B" содержит в себе все поля данных

А, экземпляр конечно содержит, он ведь и экземпляр "A" тоже
...
Рейтинг: 0 / 0
Наследование
    #34560439
Интересно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь статья неплохо разжевано
http://www.devdoc.ru/index.php/content/view/virtual_base.htm

А вопрос был применительно к шарпу.

>но физически они будут нах
???
Я имел ввиду копии будут и в падонке или только в базовом + какой-нибудь хитроумный механизм доступа к ним в падонке =).

Всем thx
...
Рейтинг: 0 / 0
Наследование
    #34563012
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно wrote:

> Я имел ввиду копии будут и в падонке или только в базовом + какой-нибудь
> хитроумный механизм доступа к ним в падонке =).
Применительно к C++ и дельфи наследование вот так выглядит:

Вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
struct A{
        int a1, a2;
        float a3;
}

struct B: public A{
        char c;
}
Должно быть (если доступ не учитывать и если компилятор размещает поля
в памяти согласно порядку их объявления) эквивалентно вот этому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
struct A{
        int a1, a2;
        float a3;
}

struct B: public A{
        B base;
        char c;
}

Имеется в виду - "эквивалентны по расположению в памяти".

Вообще, в MSDN должны быть статьи по наследованию.
Для C++ там, к примеру, очень подробно рассматривается структура
классов, порядок вызова конструкторов, как собирается класс при
множественном наследовании, как он расположен в памяти и т.д.

Хотите сказать, что для C# подобной инфы в справке Visual Studio нет? :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Наследование
    #34563633
Интересно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С цепочками вызовов конструкторов в литературе вроде как проблем нет нормально описано, а вот с расположением в памяти как в выше приведённой статье с этим так сказать есть затруднения, хотя вещи эти для объяснения обязательные. Просто раньше не вникал в суть как и что, мол наследуется да и бог с ним, вроде есть доступ больше и не надо знать. остальное на совести компилятора =)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Наследование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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