Как использовать virtual/override функции в C#?
Я решил попробовать воспользоваться виртуальными функциями. У меня выводится только то, что было написано в виртуальной функции Run() в обобщающем классе Animal.
Вывод:
Вот код:
Обобщающий класс Animal:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleAppTester
{
public class Animal
{
protected virtual void Run()
{
Console.Write("Hello World! My name is");
}
public void Runsya()
{
Run();
}
}
}
Наследник Dog:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleAppTester
{
public class Dog : Animal
{
protected override void Run()
{
base.Run();
Console.WriteLine("Dog!");
}
}
}
Наследник Cat:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleAppTester
{
public class Cat : Animal
{
protected override void Run()
{
base.Run();
Console.WriteLine("Cat!");
}
}
}
Ответы (1 шт):
Автор решения: Arkee
→ Ссылка
Как и написали в комментах ошибка за пределами показанного кода. Единственное, что могу подсказать - попробуй собрать такой пример:
public class Animal
{
protected virtual void Run()
{
Console.WriteLine("Hello World! My name is");
}
public void Runsya()
{
this.Run();
}
}
public class Dog : Animal
{
protected override void Run()
{
base.Run();
Console.WriteLine("Dog");
}
}
public class Cat : Animal
{
protected override void Run()
{
base.Run();
Console.WriteLine("Cat");
}
}
static void Main(string[] args)
{
Animal dog = new Dog();
dog.Runsya();
Animal cat = new Cat();
cat.Runsya();
Console.ReadLine();
}