399 / 73 / 7
Регистрация: 29.01.2018
Сообщений: 1,244
1

Вызов метода из базового класса

26.08.2019, 03:20. Показов 1306. Ответов 6
Метки нет (Все метки)

привет!

не могу понять, не доходит, как в c# сделать так чтобы из производного класса вызвать метод базового.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
 
public class foo{
public int a=11;
public void ou(){
Console.Write(a);
 
}
}
 
public class f: foo{
public int b=12;
public void ou(){
Console.Write(b);
 
}
 
}
 
class My{
 
public void Main(){
 
 
f obj = new f();
 
obj.ou(); // что я должен сделать? расширить просстранство имен? указать base?   чтобы отработал метод класса foo ? при том что f obj=new f();
 
 
 
 
 
}
}
 
пытался virtual и override не помогает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2019, 03:20
Ответы с готовыми решениями:

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Вызов метода базового класса
public class BaseClass { public virtual void Foo() { Console.WriteLine ("BaseClass.Foo"); } }...

Вызов метода наследика с базового класса
Здравствуйте. Подскажите, как в базовом классе можно вызвать метод наследника, который не...

Вызов метода базового класса игнорируя переопределенный метод в производном классе
Как вызвать метод базового класса игнорируя переопределенный метод в производном классе. PS...

6
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
26.08.2019, 06:27 2
C#
1
((foo)obj).ou();
1
3 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 11
26.08.2019, 08:39 3
((foo)obj).ou();
Да, нужно преобразование типов. Вот тут можешь почитать
https://metanit.com/sharp/tutorial/3.11.php
1
399 / 73 / 7
Регистрация: 29.01.2018
Сообщений: 1,244
26.08.2019, 16:35  [ТС] 4
C++
1
foo::ou(); // так бы я мог сделать в плюсах.
чем переопределять объект, проще создать новый. это не гибко.

С# такой мощный язык, не ужели нельзя как-то красиво вызвать метод базового класса в наследуемом классе, если он был , допустим , переопределен? то есть как в примере выше
0
Модератор
Эксперт .NET
13262 / 9554 / 2564
Регистрация: 21.04.2018
Сообщений: 28,195
Записей в блоге: 2
26.08.2019, 19:20 5
Цитата Сообщение от pcmax Посмотреть сообщение
чем переопределять объект, проще создать новый. это не гибко.
Это не переопределение!
Это приведение к базовому типу.
Так как вам нужен метод базового типа, то надо это как-то указать. Указывается через приведение к базовому типу.
Но такое возможно, только скрытых методов объявленных в производном классе с модификатором new.
Для переопределенных виртуальных методов объявленных как override такое невозможно. Базовый метод переопределённый в производном классе можно вызвать только "внутри" производного через base.
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,180
26.08.2019, 21:16 6
Цитата Сообщение от pcmax Посмотреть сообщение
foo::ou(); // так бы я мог сделать в плюсах.
инстанс все равно же придется передавать, иначе аналогия поехала
Цитата Сообщение от pcmax Посмотреть сообщение
С# такой мощный язык, не ужели нельзя как-то красиво вызвать метод базового класса в наследуемом классе
нельзя писать код на c# мысля на c++.
относительно красиво можно через (obj as foo).ou();, однако мне в принципе сложно назвать любое решение красивым, так как имеет место сокрытие метода базового класса
2
3393 / 2409 / 1161
Регистрация: 14.08.2016
Сообщений: 8,079
26.08.2019, 23:41 7
емнип, только апкаст
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2019, 23:41
Помогаю со студенческими работами здесь

Вызов переопределенного метода класса наследника из базового класса
Предположим есть два класа: public class A { /* ... некая...

Вызов метода дочернего класса из базового
Привет всем. Ни как не могу понять как позволить базовому классу вызвать метод дочернего. Например:...

Использование метода из наследованного класса к объекту базового класса
Есть метод public void OpExp() { if (Person._age<18) ...

Перекрытие метода базового класса
Уважаемые форумчане, обьясните пожалуйста разницу между class A { public void...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru