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

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

15.04.2013, 17:55. Просмотров 1390. Ответов 5
Метки нет (Все метки)

Уважаемые форумчане, обьясните пожалуйста разницу между
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
 class A
    {
        public void Method()
        {
            Console.WriteLine("in class A");
        }
 
    }
 
    class B : A
    {
        public new void Method()
        {
            Console.WriteLine("in class B");
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.Method();
            Console.ReadKey();
        }
    }
и
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
 class A
    {
        public void Method()
        {
            Console.WriteLine("in class A");
        }
 
    }
 
    class B : A
    {
        public void Method()
        {
            Console.WriteLine("in class B");
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();
            b.Method();
            Console.ReadKey();
        }
    }
Ведь и так и так срабатывает метод класса В, просто если явно не перекрыть метод словом new, то компилятор напоминает об этом, но ошибки не возникает и работает одинаково.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 17:55
Ответы с готовыми решениями:

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

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

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

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

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

5
Sylar9
135 / 56 / 13
Регистрация: 04.09.2011
Сообщений: 1,952
Записей в блоге: 1
15.04.2013, 18:08 2
В первом коде ты перегружаешь метод базового класса А
public new void Method() , а во втором коде ты создаешь свой метод класса В
0
andrew_w2k
324 / 324 / 90
Регистрация: 04.03.2010
Сообщений: 648
15.04.2013, 18:10 3
разница - это мовитон. Ключевое слово new в этом случае скорее указывает на то, что "автор" метода перекрыл метод базового класса намеренно.
1
Sylar9
135 / 56 / 13
Регистрация: 04.09.2011
Сообщений: 1,952
Записей в блоге: 1
15.04.2013, 18:12 4
На твоем примере , тяжело для тебя понять принципы наследования и перегрузки методов базового класса
0
Noob Saibot
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 17
15.04.2013, 18:13  [ТС] 5
Цитата Сообщение от Sylar9 Посмотреть сообщение
В первом коде ты перегружаешь метод базового класса А
может перекрываю а не перегружаю?
0
kolorotur
Эксперт .NET
10723 / 8881 / 2223
Регистрация: 17.09.2011
Сообщений: 15,272
Завершенные тесты: 1
15.04.2013, 20:20 6
Разницы между примерами абсолютно никакой.
Ключевое слово new лишь "затыкает" компилятор.
2
15.04.2013, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 20:20

Почему при наследовании метода из базового класса получаются одинаковые значения?
столкнулся с такой проблемой. Есть два класса: Player и Dealer, оба наследуют...

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

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new...


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

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

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