Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- try
- {
- B obj1 = (B)new A(); //не компилится - не может преобразовать B в A, т.к. преобразование восходящее и не может прелбразовать неявно
- //если добавить явное преобразование, то выбросит исключение, тк не каждый объект В является объектом А
- obj1.Foo();
- }
- catch(InvalidCastException)
- {
- Console.WriteLine("Не удалось преобразовать");
- }
- B obj2 = new B(); //обычное создание экз.класса. Вывод: класс В
- obj2.Foo();
- A obj3 = new B(); //Нисходящее преобразование, любой объект В происходит от объекта А. Будет вызван метод класса В
- obj3.Foo();
- Console.ReadKey();
- }
- }
- }
- class A
- {
- public virtual void Foo() //в тесте не стоят модификаторы доступа к методам - виртуальные методы не могут быть приватными
- {
- Console.Write("Class A");
- }
- }
- class B : A
- {
- public override void Foo()
- {
- Console.Write("Class B");
- }
Advertisement
Add Comment
Please, Sign In to add comment