I'm a little unclear about the virtual/new/override factor, here's some example:

class A

class B : A

class C : B

class Test


    b2 = new C()

        b2.mVVirtual()    //C::mVVirtual ... I realize this

        A a2 = new C()

        a2.mVVirtual()    //A::mVVirtual ... ???


I dont get why within the second call we obtain A::mVVirtual. It's my job to treat these problems with this particular "formula":

Check the kind of the variable holding the reference for that object to have an instance method known as mVVirtual? Does not have one...but comes with an online method with this signature and title!

Virtual method? Allows then check the kind of the item being held by a2 (C) to have an overriding of this method. It's one -> Executes C::mVVirtual!

Where's my "formula" wrong? I truly am confused with this, would greatly appreciate outside assistance.

Cheers )