Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Как извлечь данные из HashSet<string> https://www.cyberforum.ru/ csharp-beginners/ thread562253.html
Всем привет! Понадобилось удалить дубликаты из List<string> Погуглив нашел решение от turbanoff Он предложил заменить лист на хешсет, я заменил, действительно дубликаты удалились. Но как теперь...
Пользователь вводит число >100, программа выводит сумму цифр в числе и их среднеарифметическое C#
Доброго времени суток.Мне нужна ваша помощь с решением задачи. вот задача: Пользователь вводит число >100, программа выводит сумму цифр в числе и их среднеарифметическое. заранее спасибо.
C# Класс млекопитающих: создать дочерний класс кошка, который также характеризуется именем и положением в пространстве Есть класс млекопитающих. Он у меня характеризуется именем и положением в пространстве. Хочу создать дочерний класс кошка, который также характеризуется именем и положением в пространстве. ... https://www.cyberforum.ru/ csharp-beginners/ thread562202.html C# Поисковик файлов: при неоднократном нажатии на кнопку поиска программа рушится Пожалуйста, помогите с советом. У меня программа на основе ВинФорм и работает поиск. При одинарном нажатии кнопки поиска все работает нормально. Но если нажимать эту кнопку несколько раз подряд,... https://www.cyberforum.ru/ csharp-beginners/ thread562164.html
Увеличьте массив, вставив после каждого элемента такой же C#
Здравствуйте, нужна помощь с решением заданий в C#(консоли). А) Пусть дана последовательность из элементов N. Увеличьте ее, вставив после каждого элемента такой же. Б) Дано 40 элементов. Укажите...
C# Ввести n чисел. Содержит ли последовательность хотя бы одну пару равных соседних элементов https://www.cyberforum.ru/ csharp-beginners/ thread562141.html
Здравствуйте, нужна помощь с решением задания в C#(консоли). Ввести n чисел. Содержит ли последовательность хотя бы одну пару равных соседних элементов.
C# Подсчитать время до срабатывания таймера добрый день, у меня возникла такая проблема. Работаю с с# с формами. мне нужно вывести в label время до срабатывания таймера. все перерыла и поняла, что свойства как такового нет, здесь чисто логика,... https://www.cyberforum.ru/ csharp-beginners/ thread562110.html Ошибка в удалении из массива одинаковых чисел C#
Не могу понять, почему то удаляет некорректно(( Надо удалять одинаковые числа, причем не первое, а второе (повтор). А вместо этого удаляются оба, да еще и 4, выдает ответ 7 и 12. Помогите, плз!...
C# Интерфейсы и параметризованные коллекции Написать демонстрационную программу, в которой создаются объекты различных классов и помещаются в массив, после чего массив просматривается. двигатель, двигатель внутреннего сгорания, дизель,... https://www.cyberforum.ru/ csharp-beginners/ thread562046.html C# Подсчитать зарплату и бонус Значится, у служащих зарплата. А у манагеров зарплата + бонус. Голову уже сломал. Подскажите, пожалуйста, почему ругается на string и фигурную скобку? using System; class Employee {... https://www.cyberforum.ru/ csharp-beginners/ thread562014.html
Строка: определить, какой из двух заданных символов встречается чаще в строке C#
Есть у кого нибудь идеи как переделать эти программы под следующие задания: 1) using System; using System.Text; namespace ConsoleApplication { class Class { static void Main()
C# Где читать в спецификации о вызове конструктора родительского класса https://www.cyberforum.ru/ csharp-beginners/ thread561987.html
Не могу что-то найти. Подскажите, пожалуйста, где в документации я могу прочитать, что наделает конструктор, выделенный мной красным на рисунке. Заранее спасибо
133 / 105 / 30
Регистрация: 12.06.2011
Сообщений: 1,172
0

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода - C# - Ответ 2973473

30.04.2012, 17:33. Показов 15493. Ответов 3
Метки (Все метки)

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

Таким образом, в моем понимании, возможны три варианта:
1. Вызов метода базового класса путем обращения с экземпляром дочернего класса как с экземпляром родительского класса (например, при помещении в массив экземпляров родительского класса).
2. Вызов переопределенного метода (overridden).
3. Вызов нового метода (new).

И надеялся в своем примере получить:
Overridden имя кошки: Murka.
В базовом классе: Baikal
New имя собаки:Baikal

Т.е. в цикле foreach должен у собаки вызваться метод из базового класса (потому что я в этом цикле прогоняю экземпляры класса Animal). А вот когда я конкретно вызываю метод получения имени для класса Dog, то должен сработать новый метод.

Почему в своем примере я получаю результат
Overridden имя кошки: Murka.
В базовом классе: Baikal
В базовом классе: Baikal

?

Заранее спасибо.



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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System;
class Animal
{
    public Animal(string name)
    {
        this.name = name;
    }
 
    public virtual string getName()
    {
        return "В базовом классе " + name;    
    }                            
 
    private string name;
 
}
 
class Cat : Animal
{
    public Cat(string name) : base(name){}
    public override string getName()
    {
        return "Overridden имя кошки: " + base.getName();
    }
}
 
class Dog : Animal
{
    public Dog(string name) : base(name){}
 
    new string getName()
    {
        return "New имя собаки: " + base.getName();
    }
 
}
 
 
class AnimalTest
{
    public static void Main()
    {
        Animal[] farm = new Animal[2];
      farm[0] = new Cat("Murka");
        farm[1] = new Dog("Baikal");
 
 
        foreach(Animal animal in farm)
        {
            Console.WriteLine(animal.getName());
        }
 
        Console.WriteLine(farm[1].getName());
 
    }
}


Вернуться к обсуждению:
Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода C#
Миниатюры
Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2012, 17:33
Готовые ответы и решения:

Экземпляры класса, вызов переопределенного метода
как лучше вызвать переопределенный метод? Console.WriteLine(m1.ToString()); или через...

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

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

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

3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2012, 17:33
Помогаю со студенческими работами здесь

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

Переопределение метода базового класса
Есть библиотека, в которой находится базовый класс А, который содержит функцию проверки Check. Есть...

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

Переопределение метода базового класса в производном
В базовом классе Base метод CreateObjMC создаёт объект производного класса, а в производном классе...

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