jak działa rzutowanie

0

Mam:

 
  class A
        {
            public  int x = 23;
                       
            public A(){}
            public  A(RichTextBox r1)
            {
               
                r1.AppendText("\nwywołano konstruktor klasy A\n");
            }

            public virtual string getme()
            {
                return "klasa A";
            }

            public string getarbuz()
            {
                return "arbuz";
            }
        }

        class B : A
        {
            new public  int x = 45;

           public B(){}
           public  B(RichTextBox r1)
            {
               
                r1.AppendText("\nwywołano konstruktor klasy B\n");
            }

            public override string getme()
            {
                return "klasa B";
            }

            public int getBaseX()
            {
                return base.x;
            }

        }

i wykonuję rzutowanie:

 a = (A) b;   
 richTextBox1.AppendText("\n\n  a=" + a.x.ToString() + "  getme = " + a.getme());

Dlaczego obiekt a.x wyświetla liczbę 23 z klasy A a metodę getme z klasy B?

0

Ponieważ metody w przeciwieństwie do pól są polimorficzne.
Edit: a raczej ta metoda getmi, zadeklarowana jako wirtualna uczestniczy w mechanizmie polimorfizmu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1