Точная разница между переопределением и сокрытием

Может ли кто-нибудь рассказать о работе переопределения и сокрытия с точки зрения памяти и ссылок.

class A
{
    public virtual void Test1() { //Impl 1}
    public virtual void Test2() { //Impl 2}
}
class B  : A
{
    public override void Test1() { //Impl 3}
    public new void Test2() { Impl 4}
}

static Main()
{
    A aa=new B() //This will give memory to B
    aa.Test1(); //What happens in terms of memory when this executes
    aa.Test2(); //-----------------------SAME------------------------
}

Здесь память относится к классу B, но во втором операторе aa.Test2будет вызываться метод класса A. Почему это? Если у B есть память, то следует вызвать метод B (с моей точки зрения).

Любая ссылка/упражнение, описывающее этот принцип очень глубоко и полностью, будет большим подспорьем.

16
задан dbc 12 May 2019 в 06:20
поделиться