class MyBaseClass
{
virtual public void Print()
{
Console.WriteLine("This is the base class.");
}
}
class MyDerivedClass : MyBaseClass
{
override public void Print()
{
Console.WriteLine("This is the derived class.");
}
}
class Program
{
static void Main()
{
MyDerivedClass derived = new MyDerivedClass();
MyBaseClass mybc = (MyBaseClass)derived;
derived.Print();
mybc.Print();
}
}
OUTPUT:
This is the derived class.
This is the derived class.
I do not understand why second call prints derived class's print() method because I cast mybc object to base class. I expect it to print base class print method instead. Am I missing something here?