Объекты в качестве аргументов метода - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую. Имею код:
Листинг программы
  1. class A
  2. {
  3. public void Method()
  4. {
  5. Console.WriteLine("parent");
  6. }
  7. public static void Test(A arg)
  8. {
  9. arg.Method();
  10. }
  11. }
  12. class B : A
  13. {
  14. new public void Method()
  15. {
  16. Console.WriteLine("child");
  17. }
  18. }
При вызове:
Листинг программы
  1. A.Test(new B());
В консоли оказывается не ожидаемая мной child, а parent. Какое-то время обходился вводом интерфейса (Пусть будет I), и заметой типа аргумента с A на этот интерфейс I, однако, хотелось бы услышать все же правильный способ. Заранее спасибо.

Решение задачи: «Объекты в качестве аргументов метода»

textual
Листинг программы
  1. class A
  2.     {
  3.        // ну и можно скрыть от клиентского кода, раз уж напрямую не используете
  4.         protected virtual void Method()
  5.         {
  6.             Console.WriteLine("parent");
  7.         }
  8.  
  9.         public static void Test(A arg)
  10.         {
  11.             arg.Method();
  12.         }
  13.     }
  14.  
  15.     class B : A
  16.     {
  17.          protected override void Method()
  18.         {
  19.             Console.WriteLine("child");
  20.         }
  21.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы