Diğer dersleri gördünüz mü? https://selimkaratas.com.tr/java-se-ders-notlari
Java’da Kalıtım – Inheritance
İki adet sınıf düşünelim. Birinin adı Ebeveyn diğerinin adı Çocuk olsun. Ebeveyn sınıfının özelliklerini anne+baba’nın işlevleri oluşturmaktadır. Çocuk ise bazı özellikler bakımından anne babaya benzerlik göstermektedir. (saç rengi, göz rengi) Bunların yanından çocukta anne ve babasında olmayan bazı özelliklerde yer alabilir. ( Anne baba kısa boylu iken çocuğun uzun olması). Ebeveyn gibi üst sınıflara süper sınıflar denir. Bunlardan türetilen alt sınıflara alt sınıflar denir.
Java’da kalıtım bir sınıfın kendine ait özellikleri başka bir sınıfa aynen aktarması ya da bazı özellikleri diğer sınıflara izin vermesidir.
public class AltSinif extends superSinif { }
bizim örneğimiz için
public class cocukSinifi extends ebeveynSinifi { }
Extends deyimi: bir sınıfa ait özelliklere başka bir sınava miras almak için kullanılır.
Her alt sınıf doğrudan bir tane süper sınıfa sahip olabilir. Her alt sınıf süper sınıfın özelliklerini taşır. Süper sınıftan alınan bazı özellikler değiştirilebilir. Aynen kullanılmak zorunda değildir. Kalıtımın basamakları çok uzun olmamalıdır. Bu kötü tasarıma neden olur.
Kalıtımın Faydaları
Daha önceden yazılmış kod parçacıkları tekrar tekrar yazılmadan başka sınıflarda kullanılabilir. if, else, switch gibi kontrol ifadelerinin oolduğu sınıflar kötü tasarım örnekleridir. Bunun yerine kalıtım tercih edilmelidir.
Metot Overriding
Herhangi bir alt sınıfta süper sınıfa ait bir metot aynı isim, aynı parametre ve dönüş tipi ile kullanılırsa overriding yapmış oluruz. (üzerine yazmak) Alt sınıfta yeni bir nesne ürettiğimizde süper sınıfa göre değil yeni sınıfa ( alt sınıfa) uygun çalışmaktadır.
Kalıtım örnek çalışması:
toString Metodu:
Obje sınıfına ait bir metotdur. Nesneleri metin halinde gösterir. Bir süper sınıf olan object sınıfından çağırıp kullanırız.
super() deyimi:
Tüm default yapılandırıcılar kalıtım ağacında yukarıdan aşağı doğru java tarafından gizli olarak ve otomatik aktarılır. Bu yapılandırıcıları kullanmak için super() deyimini kullanırız.
Bir örnek üzerinde tüm kalıtım özelliklerini görelim.
Bizim bir hayalimiz var. ( Hocam selamlar 🙂 )
Personel sınıfımızda çeşitli bilgiler oluşturduk. Kişilere ait ad,soyad,yaş gibi bilgileri. Bunları personel sınıfında yazdırıyoruz. super deyimi ile bunu Ogrenci sınıfına aktarıyoruz ve ekstra olarak OgrenciNo bilgisini o sınıfta kullanıyoruz. Ekstra olarak toString metodunu String sınıfından override ederek kullanıyoruz.
Öncelikle personel.java sınıfımız
Şimdi ogrenci.java sınıfımıza bakalım
Burada da main sınıfımıza ait detaylarımız var.
Çıktımız aşağıdaki gibi olacaktır:
https://github.com/sekaist/KalitimOrnekleri2
adresinden detaylı olarak yapılmış kalıtım örneğini inceleyebilirsiniz.
“Java’da Kalıtım – Inheritance” için 3 yanıt
Emeklerinize sağlık, çok faydalı bir gönderi olmuş.
Öğretirken bir yandan Ali İsmail’i hatırlattığınız için teşekkürler.
Ali Ismail’i bu tarz dokumantasyonlarda ornek olarak kullanmak cok guzel fikirmis.