Позднее связывание и виртуальные методы - C#

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

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

Добрый день. Возник вопрос по поводу позднее связывания в c#. В с++ п.с. можно организовать следующим образом:
class A:
{
public:
virtual void f
{}
};
class B:public A
{
    public:
virtual void f
{}
};
void main()
{
  A.a; //создание объекта а класса А
B.b; //создание объекта b класса B
A *p=&b;
p->f(); //позднее связывание
}
А как п.с. организовать в с#? По примерам сделала следующим образом:
public int func1(Person1 a)
        {
       
            // Используем позднее связывание
            object obj = Activator.CreateInstance(typeof(object));//Создает экземпляр указанного типа, используя конструктор, заданный для этого типа по умолчанию.
            
            return 0;
        }
 
...
  Person1 a = new Person1(s1, s2, s3, s4, s5, 2, 3, 2016);
                a.virt_func1(a);
Создала объект obj ,но от него никакого толка. Приведите пожалуйста пример толкового связывания,как в моем примере на с++

Решение задачи: «Позднее связывание и виртуальные методы»

textual
Листинг программы
using System;
 
namespace ConsoleApplication212
{
    class Program
    {
        static void Main(string[] args)
        {
            A a = new A(); //создание объекта а класса А
            B b = new B(); //создание объекта b класса B
            a = b; //присвоение переменной a объекта из b
            a.F(); //вызов виртуального метода (будет вызван метод из B)
            //
            Console.ReadLine();
        }
    }
 
    class A
    {
        public virtual void F()
        {
            Console.WriteLine("This is method from A");
        }
    }
 
    class B : A
    {
        public override void F()
        {
            Console.WriteLine("This is method from B");
        }
    }
}

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


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

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

6   голосов , оценка 4.5 из 5
Похожие ответы