Bölüm 4 · SimülatörDinamik Bağlama: Hangi Metot Çalışır?? ← Bölüm 4 r = new(); RastgeleSınıf hiyerarşisiMain.javaÇalışan metotÇıktı (konsol) ◀ Geri Adım ▶ Oynat Sıfırla Kendini dene Doğru 0 / 0 KapatDinamik Bağlama: Hangi Metot Çalışır?Amaç: Hayvan r = new Kopek(); gibi bir satırda iki tip vardır: değişkenin referans tipi (bildirilen tip, Hayvan) ve nesnenin nesne tipi (gerçek tip, Kopek). Bir çağrı iki aşamada çözülür: derleyici referans tipine bakıp "bu metot var mı?" diye sorar; JVM çalışma zamanında nesne tipine bakıp "hangi sürüm?" diye sorar.Nasıl kullanılır?Üstte referans tipini, nesne tipini ve çağrıyı seçin (ya da Rastgele).Adım ▶ / ◀ Geri (klavyede → / ←), Oynat, Sıfırla. Hiyerarşide kesik mavi çerçeve referans tipini, kırmızı çerçeve nesne tipini gösterir; mavi satırlar derleyicinin, kırmızı satırlar JVM'nin aramasıdır.Kendini dene: kodun derlenip derlenmeyeceğini, hangi sürümün çalışacağını ve çıktıyı tahmin edin.KurallarAtama yalnızca nesne tipi referans türünün alt türüyse derlenir (Hayvan r = new Kopek(); geçerli, Kopek r = new Hayvan(); değil).Derleyici metodu referans tipinden başlayıp yukarı doğru arar; bulamazsa nesne ne olursa olsun derleme hatası verir.Örnek metotları dinamik bağlanır: JVM aramaya nesnenin gerçek sınıfından başlar ve aşağıdan yukarı ilk bulduğu sürümü çalıştırır. Üst sınıftaki bir metodun içinden yapılan ad() çağrısı da (this.ad()) böyle çözülür.static metotlar ve aşırı yüklenmiş sürümler arasındaki seçim dinamik değildir: derleyici referans tipine göre seçer.super.sesCikar() dinamik bağlanmaz: doğrudan üst sınıfın sürümü çalışır.(Kopek) r aşağı dönüşümü derlenir ama çalışma zamanında denetlenir; nesne bir Kopek değilse ClassCastException fırlatılır. Akraba olmayan tipler arasında (Kedi → Kopek) dönüşüm hiç derlenmez.SınıflarHer referans tipi, nesne tipi ve çağrı birleşimi (180 durum) javac --release 8 ile derlenip Java 8 üzerinde çalıştırılarak doğrulanmıştır; derleyici iletileri ve çıktılar gerçek sonuçlardır.İlgili sunumlar: Bölüm 4 · Çok Biçimlilik (Referans Tipi ve Nesne Tipi, Dinamik Bağlama, Metot Arama: Aşağıdan Yukarı, Neler Dinamik Bağlanmaz?, Aşırı Yükleme Derleme Zamanında) ve Bölüm 4 · Kalıtım (super Anahtar Kelimesi, Metodu Geçersiz Kılma).