İki Yöntem Komposizyon (Composition) Kalıtım (Inheritance)
Komposizyon(Composition) class Meyva { } //... class Elma { } private Meyva m = new Meyva(); //...
Komposizyon - UML
Örnek Motor.java AileArabasi.java
Şekil
Kuş Bakışı
Örnek Voltran.java
Kalıtım class Kedi { //.. } class Kaplan extends Kedi { //.. }
Kalıtım - UML
Örnek KediKaplan.java
Gizli Kalıtım YeniBirSinif.java
Gizli Nokta public class YeniBirSinif extends Object {
Nesne yordamları (methods) clone() : Bu nesnenin aynısını klonlar. equals(object obj) : obj nesnesi, bu nesneye eşit mi kontrolü yapar. finalize() : İlgili nesne bellekten silinmeden hemen önce çağrılan yordam. getclass() : Bu nesnenin çalışma anında sınıf bilgilerini geri döner. hashcode() : Bu nesnenin hash kodunu geri döner. notify() : Bu nesnenin bekleme havuzunda olan tek iş parçacığını (thread) uyandırır. (ilerleyen bölümlerde inceleyeceğiz) notifyall() : Bu nesnenin bekleme havuzundaki tüm iş parçacıklarını uyandırır. (ilerleyen bölümlerde inceliyeceğiz) tostring() : Bu nesnenin String tipinden ifadesini geri döner. wait() : O andaki iş parçacığının (thread) beklemesini sağlar; bu bekleme notify() veya notifyall() yordamları sayesinde sona erer. wait (long timeout) : O andaki iş parçacığının belirtilen süre kadar beklemesini sağlar; bu bekleme notify()veya notifyall() yordamları sayesinde de sona erebilir. wait (long timeout, int nanos) : O andaki iş parçacığının belirtilen gerçek süre kadar beklemesini sağlar ; bu bekleme notify() veya notifyall() yordamları sayesinde de sona erebilir.
Kalıtım-UML
Kalıtım ve ilk değer alma sırası IlkDegerVermeSirasi.java
Kalıtım-UML
Paremetre alan yapılandırıcılar ve kalıtım IlkDegerVermeSirasiParametreli.java
IlkDegerVermeSirasiParametreli.java-hatalı class Insan { public Insan(int par) { System.out.println("Insan Yapilandiricisi " + par); } } class ZekiInsan extends Insan { public ZekiInsan(int par) { System.out.println("ZekiInsan Yapilandiricisi " + par); super(par+1); //! hatalı! } } class Hacker extends ZekiInsan{ public Hacker(int par) { System.out.println("Hacker Yapilandiricisi " + par); super(par+1); //! hatalı! } public static void main(string args[]) { Hacker hck = new Hacker(5); } }
Kompozisyon mu? Kalıtım mı? Hangi yöntemi ne zaman tercih etmeliyiz? Kompozisyon(Composition) Kalıtım (Inheritance)
Komposizyon Araba.java
Kalıtım Sınıflar arasında bir ilişkisi olmalıdır. UçanYarasa bir Yarasadır. Yarasa bir Hayvandır. O zaman UçanYarasa da bir Hayvandır. Hayvan da bir Nesnedir.
İptal etmek (Overriding) Türemiş sınıfların, ana sınıflar içerisindeki yordamları (methods) iptal edilebilir. KitapEvi.java (düz) KitapEvi2.java (iptal eden)
Erişim Belirleyiciler ve İptal etme (Override) public protected friendly private Telefonlar.java (Yanlış) Hesap.java (Doğru)
İptal etmek(overriding) ve adaş yordamların(overload) birbirlerine karıştırılması Bu iki kavram birbirlerine kolaylıkla karıştırılabilir. CalisanMudur.java
Yukarı Çevirim (Upcasting) Spor.java
Yukarı Çevirim (Upcasting)-UML
Final Kavramı Final kelimesinin sözlük anlamı "son" demektir. Java programlama dilinde final anahtar kelimesi değiştirilemezliği simgeler.
Global Alanlar ve Final Kavramı Derleme anında değerlerini bilebildiğimiz final global alanlar. Çalışma anında değerlerini bilebildiğimiz final global alanlar.
Örnek FinalOrnek.java
Final parametreler FinalParametre.java
Boş (Blank) Final BosFinal.java
Final Yordamlar final yordamlar türetilmiş sınıflar tarafından iptal edilemezler (override). FinalMetod.java
private ve final final ve private erişim belirleyicisine sahip olan bir yordam, başka bir yordam tarafından iptal ediliyormuş gibi gözükebilir. SivilPolis.java
Final Sınıflar final sınıflardan türetilme yapılamaz! Tv.java
Kalıtım (Inheritance ) ve ilk değer alma sırası Bocekcik.java