Merhabalar,
Yazılım mühendisliğinde işimize yarayacak olan bilgiler yazı dizimize devam ediyoruz. Dün yayınlanan uzun kalıtım yazımızdan sonra bugün isim saklama (name hiding) nedir , isim saklama nasıl yapılır ve ne işe yarar bunlar hakkında yazacağım.
Kalıtım yapılmış, türemiş bir sınıfta bazen temel sınıftaki üye elemanları aynı isimli bir eleman ya da metot tanımlamış olabilir. Bu durumda temel sınıftaki elemana veya metoda normal yollarda erişmek mümkün değildir çünkü türeyen sınıftaki eleman veya metot temel sınıftaki elemanı veya metodu gizlemiştir. Temel sınıftaki elemana ve metoda erişmek için base anahtar sözcüğünden faydalanılır. base ile hem özelliklere hemde metotlara erişilebilir.
-base anahtar sözcüğünün temel elemana ulaşma şeklindeki kullanımı this referasına benzemektedir.
-this referansı kendisini çağıran sınıfı temsil ederken base anahtar sözcüğü ise türetmenin yapıldığı temel sınıfı temsil eder.
using System; class A { <strong> public int a;</strong> public A() { a=1; } } class T:A { <strong>public int a; </strong>public T() { a=2; } } class Program { static void Main() { T t = new T(); Console.WriteLine(t.a); } }
Yukarıdaki örnek base anahtar kelimesi kullanılmadan üretilen sonucu ekrana yazdırır burada T sınıfındaki bulunan a değişkeni aynı isimde olduğundan dolayı temelden gelen değişkenin değeri geçerli olmaz. Ekran çıktısı bu kod için “2”olur.
base kullanıldığında ise:
using System; class A { <strong> public int a;</strong> public A() { a=1; } } class T:A { <strong>public <span style="color: #ff0000;">new</span> int a; </strong> public int b; public T() { a=2; b=<strong>base</strong>.a; } } class Program { static void Main() { T t = new T(); Console.WriteLine(t.b); } }
Yukarıdaki örnekte ise base ifadesi kullanıldığından b değişkenini ekrana yazdırınca temel sınıftan gelen a değeri korunduğudan ekran çıktısı 1 olur.
Anlamadığınız ya da eksik gördüğünüz kısımlar var ise yorumlar kısmından bildirebilirsiniz.
Teşekkürler!