redSkywalker

tests1

Mar 8th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.54 KB | None | 0 0
  1.  class Program
  2.      {
  3.          static void Main(string[] args)
  4.          {
  5.              try
  6.              {
  7.                  B obj1 = (B)new A(); //не компилится - не может преобразовать B в A, т.к. преобразование восходящее и не может прелбразовать неявно
  8.                  //если добавить явное преобразование, то выбросит исключение, тк не каждый объект В является объектом А
  9.                  obj1.Foo();
  10.              }
  11.              catch(InvalidCastException)
  12.              {
  13.                  Console.WriteLine("Не удалось преобразовать");
  14.              }
  15.  
  16.  
  17.              B obj2 = new B(); //обычное создание экз.класса. Вывод: класс В
  18.              obj2.Foo();
  19.  
  20.              A obj3 = new B(); //Нисходящее преобразование, любой объект В происходит от объекта А. Будет вызван метод класса В
  21.              obj3.Foo();
  22.  
  23.              Console.ReadKey();
  24.          }
  25.      }
  26.  }
  27.  class A
  28.  {
  29.      public virtual void Foo() //в тесте не стоят модификаторы доступа к методам - виртуальные методы не могут быть приватными
  30.      {
  31.          Console.Write("Class A");
  32.      }
  33.  }
  34.  class B : A
  35.  {
  36.      public override void Foo()
  37.      {
  38.          Console.Write("Class B");
  39.      }
Advertisement
Add Comment
Please, Sign In to add comment