Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Виталя_
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 13
1

Объект базового класса вернуть как get set

05.10.2015, 12:58. Просмотров 1343. Ответов 5
Метки нет (Все метки)

Дан базовый класс А, от него унаследован производный класс B, и в нем определен объект класса А, Нужно в методе get вернуть подобъект класса B, то есть его родителя.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public int f;    //или protected
public char c;
public A(int d, char ch){ this.f = d; this.c = ch;}
}
 
class B:A
{
string e;
B(string en, char che, int dn):base(dn, che) {this.e = en;}
public A a {{get ......} set {.......}} //   Вот тут-то возникли проблемы что писать, выдает ошибку при попытке написать return base
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2015, 12:58
Ответы с готовыми решениями:

Методы get и set для объектов базового класса
class B:A { B():base(){} public A a; public A aA //нужно определить...

Ссылка базового класса на объект производного класса
Граждане, объясните почему такое происходит. До того как проверил, думал, что если для ссылки...

Как обратиться из конструктора базового абстрактного класса к свойству-массиву класса наследника
Добрый день. Подскажите как обратиться из конструктора базового абстрактного класса к...

Как сделать явное приведения переменной типа класса-наследника к типу базового класса?
Читал, что для этого нужно явное приведение к типу, но на практике выдаёт ошибку. Вот код: using...

Как привести объект базового типа к унаследованному типу
class MyList: List { } class Program { static void Main(string args) ...

5
Cupko
496 / 482 / 132
Регистрация: 17.07.2012
Сообщений: 1,430
Записей в блоге: 1
Завершенные тесты: 2
05.10.2015, 13:15 2
Виталя_, base используется для доступа к членам базового класса и никак не связан с объектом, который вам надо вернуть. В данной ситуации вам поможет return this;
0
Виталя_
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 13
05.10.2015, 13:27  [ТС] 3
Тогда он возвращает весь объект, то есть и элементы в В тоже
0
Cupko
496 / 482 / 132
Регистрация: 17.07.2012
Сообщений: 1,430
Записей в блоге: 1
Завершенные тесты: 2
05.10.2015, 13:38 4
Виталя_, в принципе да, так и должно быть. Поймите, у вас какого-то базового подобъекта не существует, а существует объект B с полями/методами унаследованными от А.
0
sldp
286 / 290 / 112
Регистрация: 29.10.2011
Сообщений: 966
Завершенные тесты: 2
05.10.2015, 18:13 5
Цитата Сообщение от Виталя_ Посмотреть сообщение
Тогда он возвращает весь объект, то есть и элементы в В тоже
явно приведите потом к А, благодаря инкапсуляции поля В вам будут не доступны, но, как выше сказано, они там все равно будут.

C#
1
public A a { get { return (A)this; } }
1
Виталя_
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 13
07.10.2015, 10:19  [ТС] 6
Короче, не так. Таким образом он прост вернет ссылку на действующий объект. А вот так правильно:

C#
1
public A a { get { return new A (this.Name, this.Age); }} //Ну или какие-то другие поля определенные в конструкторе базового
1
07.10.2015, 10:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2015, 10:19

Как присвоить объекту экземпляр базового класса?
Есть классы: class A {} class B: A {} Предположим у меня уже есть объект класса A: а1; ...

Как изменить параметры базового класса в потомке
Здравствуйте, как изменить параметры базового класса в классе потомок Пример class Class1 { ...

Как получить информацию о производных классах базового класса A
Доброе время суток! Подскажите как получить информацию о производных классах (B, C, D), базового...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.