Что происходит в памяти, когда базовый класс = новый производный класс - PullRequest
0 голосов
/ 03 декабря 2018

У нас есть два класса

public class A
{
   public void Test() 
   {
      Console.WriteLine("A");
   }
}

   public class B : A
   {
       public void Test() 
       {
          Console.WriteLine("A");
       }
   }

что происходит в памяти при создании производного класса из базового класса и почему вызывается метод базового класса?

A a = new B();
a.Test() // A
a.Test();

1 Ответ

0 голосов
/ 03 декабря 2018

Ваш код будет обрабатываться следующим образом ( Cast to A и затем вызывать метод Test):

B b = new B();
((A)b).Test();
((A)b).Test();

Поэтому он вызывает метод базового класса,Если вы используете метод, переопределяющий , вы увидите разные результаты:

public class A
{
    public virtual void Test()
    {
        Console.WriteLine("A");
    }
}

public class B : A
{
    public override void Test()
    {
        Console.WriteLine("B");
    }
}

Тогда он будет обрабатываться так:

 B b = new B();
 b.Test();
 b.Test();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...