C# Kalıtım
C# KALITIM/C# İNHERİTANCE
Diyelim ki elinizde A diye bir sınıf var. Ancak B diye bir sınıf daha oluşturmanız gerekiyor. Ancak bu B sınıfının içinde A sınıfındaki özellik ve metotların da bulunması gerekiyor. İşte bu durumda B sınıfını A sınıfından türetmeniz gerekir. Türetme kalıtım yoluyla olduğu için A sınıfının bütün üye elemanları B sınıfına adeta kopyalanır. Daha sonra B sınıfının kendine özel üye elemanlarını yazabiliriz. .Net kütüphanesindeki birçok sınıf birbirlerinden türetilmiştir. Örneğin temel veri türleri dediğimiz byte, int, uint, short, float ve bezerlerinin tamamı object sınıfından türetilmiştir. Bu sayede normalde object sınıfında bulunan ToString() metodunu bu yapı türünden nesnelerde de kullanabilirsiniz. Sınıflar türetilebilmesine rağmen yapılar türetilemez. Ancak bir sınıfın türetilmişinden yapı oluşturulabilir. C#'ta türetme şöyle yapılır:
class A
{
...
}
class B:A
{
...
}
Burada B sınıfı A sınıfından türetilmiştir ve artık B sınıfı A sınıfındaki bütün üye elemanları da içerir.
protected erişim belirleyicisi
Şimdiye kadar public ve private erişim belirleyicilerini görmüştük. Şimdi ise yeni bir erişim belirleyicisi olan protected'ı göreceğiz. Normalde bir sınıfı türettiğimizde türetilmiş sınıfın içinden ana sınıfta private olarak belirtilmiş üye elemanlara erişemeyiz. Ancak bu, private üye elemanların türetilmediği anlamına gelmez. Örneğin:
using System;
class A
{
static private int Ozellik;
}
class B:A
{
static void Main()
{
Console.WriteLine(Ozellik);
}
}
Burada B sınıfından Ozellik özelliğine erişilemez. Ancak halen Ozellik özelliği B sınıfında vardır (kopyalanmıştır). Eğer bu programda private yerine protected'ı kullansaydık Ozellik özelliğine erişebilirdik. Yani protected erişim belirleyicisi ile belirtilen üye elemanlar türetilmiş sınıfın içinden kullanılabilirler. Ancak halen diğer sınıfların erişimine kapalıdırlar. Eğer ortada bir türetme söz konusu değilse protected erişim belirleyicisinin private'ten farkı kalmaz.
NOT: Eğer türetilen bir metottan bir private üye elemana erişiliyorsa bu durumda bir engelleme gelmez. Bu da az önce söylediğimiz "Private erişim belirleyici türetilmeye engel değildir." tezini doğrular.
NOT: Eğer türetilen bir metottan bir private üye elemana erişiliyorsa bu durumda bir engelleme gelmez. Bu da az önce söylediğimiz "Private erişim belirleyici türetilmeye engel değildir." tezini doğrular.
FAZLA BİLGİ VERMEK İSTEMİYORUM EĞER OKURSANIZ MERAKLANIRSINIZ ZATEN.TEŞEKKÜRLER.

Yorumlar
Yorum Gönder