KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK
KALITIM KAVRAMINA GİRİŞ Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar. Türetilen yeni sınıflar, türetildiği sınıfların özelliklerine sahip olur. Örneğin, Araç sınıfından Otomobil sınıfı türetilirse Otomobil sınıfı Araç sınıfının özelliklerini alır, ancak tam tersi durum doğru değildir. Kalıtım yapmak için kullanılacak kelime extends ’dir.
KALITIM KAVRAMINA GİRİŞ Yukarıdaki gibi Surungen sınıfındaki elemanlar Hayvan sınıfının elamanlarını miras almış oldu. Hayvan sınıfından extends ile bir sınıf daha oluşturulabilir ancak bir sınıf birden fazla sınıftan türetilemez. Not: Kalıtımın en büyük avantajı üst sınıftaki metod ve değişkenleri tekrar yazmaktan kurtarmasıdır.
SUPER CLASS(ÜST SINIF) VE SUB CLASS(ALT SINIF) KAVRAMLARI Otomobil adında bir sınıfımız olsun. Yarış otomobili ve aile otomobili sınıfları, Otomobil sınıfının alt sınıflarıdır(Sub-Class). Otomobil sınıfı da bu sınıfların üst sınıfıdır(Super-Class). Alt sınıflar üst sınıfların tüm özelliklerine sahiptir. Alt sınıf, üst sınıfın bir metodunu değiştirebilir. Buna metod overriding denir. Not: Bir super sınıfın birden fazla alt(sub) sınıfı olabilir. Fakat bir alt sınıf, birden fazla super sınıftan türetilemez.
SUPER CLASS(ÜST SINIF) VE SUB CLASS(ALT SINIF) KAVRAMLARI
Not: Eğer super class’da private elamanlar varsa sub class’lardan erişilemez.
SUPER METODU İLE ÜST SINIFIN YAPICISINI ÇAĞIRMAK Türetilen sınıf, türeyen sınıfın yapıcısına erişmek isterse super anahtar kelimesi kullanılır. A sınıfından B sınıfını türetmiş olalım. B sınıfının yapıcısının içerisinde super() metodunu çağırırsak, A sınıfın yapıcısı çağrılmış olur. Not: super() metodu ilk sırada yazılmalıdır.
SUPER METODU İLE ÜST SINIFIN YAPICISINI ÇAĞIRMAK
super anahtar kelimesi ayrıca nesne değişkenlerine erişmemizi sağlar. Super anahtar kelimesi this anahtar kelimesine benzer. Farkı super anahtar kelimesiyle üst sınıftaki elemalara erişebilirken this anahtar kelimesiyle içinde bulunduğu sınıfın elamanına erişilebilir.
METOD OVERRIDING Türetilen sınıf türediği sınıfın özelliklerini taşıyor ve kullanabiliyor, fakat miras aldığı bu metodları aynen kullanmak istemezse overriding ile metodu değiştirebilir.
METOD OVERRIDING Not: Bir metod override edilebilmesi için belli başlı kurallar vardır. Her metod override edilemez. 1. Override edilecek metodların dönüş tipi, metod adı, parametre listeleri aynı olmalıdır. 2. Alt sınıftaki override edilecek metodun erişim belirleyicisi, üst sınıftaki override edilen metodun erişim belirleyicisinden daha yüksek derecede olmalı. overloading ve overriding arasındaki fark: Overriding’de metod adı, parametreler, tipler aynı olmak zorundadır. Overloading’te parametre sırası, veya tipleri veya sayısından en az biri farklı olmalıdır.
toString Metodunun Override Edilmesi toString() metodu, nesnelerin metin karşılıklarının ekrana yazdırılması için kullanılır. toString() metodu Object sınıfı altında tanımlanmıştır yani her sınıf toString() metoduna erişip bu metodu kullanabilir. Nesnenin metin karşılığı yoksa toString() metodu, nesnenin sınıf ismini ve hafızadaki referansını geriye dödürür.
toString Metodunun Override Edilmesi Not : Eğer bir nesneği ekrana yazdırdığımızda Object sınıfındaki toString() metodunun çalıştırılmasını ve sınıf ismini, referansını gönderilmesini istemiyorsak, bu metodu override edip kendimize göre düzenlemeliyiz.
FINAL ANAHTAR KELİMESİ final anahtar kelimesi Java’da temelde sabitler tanımlamaya yarar. ( Pi sayısı) final anahtar kelimesi sadece değişkenlere değil ayrıca sınıflara, metodlara ve parametrelere uygulanabilir. Bir sınıfı final olarak tanımlarsak bu sınıftan türetme yapamayız. Bir metodu final olarak tanımlarsak bu metodlar override edilemezler. Bir parametreyi final olarak tanımlarsak bu parametrenin değerini değiştiremeyiz. Bir değişkeni final olarak tanımlarsak bu değişkenin değerini değiştiremeyiz.
Final ile Sabit Tanımlama Final değişkenler ilk değeri atanmadan kullanılamazlar. Normalde bir değişken tanımlanıp değeri verilmediğinde default değere sahip olurdu. Fakat final değişkenlerinde değer tanımlamasak hata ile karşılaşırız. Final değişkeni ilk değeri tanımlandığı ilk anda ya da yapıcılar içerisinde verilmelidir. Metodlar içerisinde final tanımlarsak, başka satırda ilk değer verilebilir.
Final ile Sabit Tanımlama Final anahtar kelimesiyle tanımlanmış değişkenlerin değeri, programın herhangi bir yerinde değiştirilemez.
Final ile Sabit Tanımlama Metod içerisinde final tanımlarsak, ilk değer atamasını başka bir satırda yapabiliriz. Final değişkenler aynı zamnda static olabilir. Tüm sınıf öğeleri bu değişkeni ortam olarak kullanırlar ve değiştiremezler. public static final int x=6;
Final ile Metodların Override Edilmesini Engelleme Metodları final olarak tanımlarsak, bu metodlar override edilemezler.
Final ile Parametrelerin Değerinin Değişmesini Engelleme Final parametreleri, bir metoda gönderdiğimiz parametrelerin değişmesini istemediğimiz durumlarda kullanılır.
Final ile Sınıfların Kalıtımını Engelleme Final sınıflar’dan başka sınıflar türetilemez.
UPCASTING VE DOWNCATING KAVRAMLARI Omurgalı Object – Canlı – Hayvan – Omurgasiz Downcasting Upcasting
UPCASTING VE DOWNCATING KAVRAMLARI
Bir başka yazım şekli. Referans olarak belirlediğimiz sınıfa doğru cast işlemi yapıldı. Upcasting yaparken bunu yapmak zorunda değiliz. Ancak Downcasting işleminde bu zorunludur.
UPCASTING VE DOWNCATING KAVRAMLARI