Öncelikle bu yazı sizlere geniş ve akademik bir biçimde Inheritance kavramını öğretmek amacı gütmemektedir. Önemli ve ayrıntı sayılabilecek veya alışageldiğimiz Inheritance kavramlarının temelindeki mantığı size sunmayı ummaktadır. Inheritance ileilgili geniş bilgiyi bulabileceğiniz Türkçe kaynağa bu link ile erişebilirsiniz.
Inheritance object oriented programalamada kullanılan bir prensiptir. Türkçeye türeme olarak çevirilebilir. Inheritance objelerdeki IS-A bağıntısını kurmak için kullanılır. Örneğin yukarıdaki resimdeki gibi CAT IS A PET. veya CAR IS A VEHICLE gibi. Bu örnekler şunu gösteriyor ki, bir otomobil bir aracın tüm özelliklerini göstermeli ve ayrıca kendine ait başka özellikler de barındırabilir. Birde HAS-A bağıntısı vardır. Bu bağıntılar ise COMPOSITION prensibini belirtir.
Programlamada da objeler ile çalışırken de aynı prensipten yararlanırız. Örneğin bir otomasyon programımız olsun ve bu otomasyon programında 2 adet nesne kullanıyor olalım: ÖĞRENCİ ve İŞÇİ.
Bu iki nesnenin adı,soyadı gibi özellikleri ortaktır. Ama öğrencinin not ortalaması ile işçinin maaşı ortak özellikleri değildir. Bu yüzden class yapımızı oluşturuken bu ortak özellikleri içeren bir nesne bulabiliriz. Düşündüğümüzde şunu söyleyebiliriz: öğrenci ve işçi birer insandır. o halde bu nesnelerin ortak özelliklerini ortak bir nesnede oluşturabilirim.
İNSAN—-> ÖĞRENCİ, İNSAN—->İŞÇİ.
Öğrenci ve İşçi insan nesnesinden türeyebilir. Her insanın adı soyadı bilgileri vardır. İşte bu oluşturduğumuz mantığa inheritance diyebiliriz.
Bu mantık girişinden sonra inheritance’ın bazı özelliklerini yazalım. Detaylı bilgileri internetten kolayca bulabilirsiniz.
Türemede Genel Özellikler:
Türemede Tip kullanımı:
Student s=new Student("Özgür","KOÇ");
Person p=s;
println(p.getAdSoyad()); // SONUÇ: Özgür KOÇ.
Yukarıdaki satırlar şunu gösterir: Base classtan türeyen classlara ait objeler base class tipindeki referanslar aracılığı ile erişilebilir. Çünkü Student classı Person classından türemiştir. Ve “s” nesnesi aslında p nesnesinin tüm özelliklerini içerir. Ama eğer P classın gerNotOrtalaması metodu yok ise s nesnesi içindeki not ortalaması bilgisini alamayız.
POLYMORPHISM:
Polymorphism kavramı temelde şudur. Referansın alacağı tipin run time’da belli olmasıdır. Yani dinamik bir olaydır. Öreğin:
Student s1=new Student("Özgür","KOÇ");
Employee e1=new Employee("Yaşar","USTA");
Person p=null;
if(today.equals("PAZARTESI")){
p=s1;
} else{
p=e1;
}
println(p.getAdSoyad()); // Eğer bugun pazartesi ise SONUÇ: Özgür KOÇ. değilse Yaşar Usta
Görüldüğü üzere, Person tipindeki referansın hangi tipte bir nesneyi refere edeceği run-time’da belli olmuştur. Eğer bugun pazartesi ise p bir öğrenci tipindeki nesneyi gösterecektir. Buna polymorphism denir.


