Metotlarda new demek tam olarak ne işe yarıyor?
Evet, "new" anahtar kelimesi, kalıtım yapılarında türetilmiş sınıflarda, temel sınıfta tanımlanmış olan bir metodu veya özelliği gizlemek (masking) veya geliştirmek (shadowing) için kullanılır. "override" anahtar kelimesi ise, temel sınıfta tanımlanmış olan bir sanal (virtual) metodu türetilmiş sınıfta yeniden tanımlamak için kullanılır.
Yani, türetilmiş sınıfta bir metot tanımladığınızda, eğer bu metot temel sınıfta zaten tanımlanmışsa ve siz değiştirerek farklı bir işlevsellik eklemek istiyorsanız "new" anahtar kelimesini kullanmanız gerekir. "override" anahtar kelimesi ise, temel sınıfta zaten tanımlanmış olan bir sanal metodu aynı isim ve imza ile türetilmiş sınıfta yeniden tanımlamak için kullanılır.
Örneğinizde, A sınıfındaki Metot1 normal bir metot iken, B sınıfında "new" anahtar kelimesi kullanarak Metot1'i tekrar tanımlamışsınız. Bu durumda, B sınıfından bir nesne oluşturduğunuzda bu sınıfın Metot1'i çağrılacaktır. Ancak A sınıfından bir nesne oluşturduğunuzda, A sınıfındaki Metot1 çağrılacaktır.
Öte yandan, A sınıfındaki Metot2 bir sanal metot olduğu için, B sınıfında "override" anahtar kelimesi kullanarak yeniden tanımlamışsınız. Bu durumda, B sınıfından bir nesne oluşturduğunuzda B sınıfındaki Metot2 çağrılacaktır, ancak A sınıfından bir nesne oluşturduğunuzda bile B sınıfındaki Metot2 çağrılacaktır (çünkü sanal bir metot olduğu için, türetilmiş sınıfta yeniden tanımlanmışsa, türetilmiş sınıftaki metot çağrılacaktır).