1. Ama hepsi bu kadar değil.
Sınıfın diğer iki yöntemi çağıran Cow
bir yöntemi olduğunu varsayalım . printAll()
Ardından kod şu şekilde çalışacaktır:
kod | Tanım |
---|---|
|
|
|
Ekran çıktısı şöyle olacaktır:
|
printAll()
Sınıftaki yöntem bir nesneCow
üzerinde çağrıldığında , yöntemdekinin değil, sınıfın yönteminin kullanıldığını unutmayın .Whale
printName
Whale
Cow
Önemli olan yöntemin yazıldığı sınıf değil, yöntemin çağrıldığı nesnenin türü (sınıfı).
Yalnızca statik olmayan yöntemler devralınabilir ve geçersiz kılınabilir. Statik yöntemler miras alınmaz ve bu nedenle geçersiz kılınamaz.
Whale
Kalıtım ve yöntem geçersiz kılma uygulandıktan sonra sınıfın nasıl göründüğü aşağıda açıklanmıştır :
|
Kalıtım ve yöntem geçersiz kılma uygulandıktan sonra sınıf şu şekilde görünür: Herhangi bir eski yöntem Whale hakkında bilgimiz yok .printName |
2. Tahmin
Burada daha da ilginç bir nokta var. Bir sınıf, üst sınıfının tüm yöntemlerini ve verilerini miras aldığından, alt sınıfın bir nesnesine yapılan başvuru, türü üst sınıfla (ve ebeveynin üst sınıfıyla, vb.) aynı olan değişkenlerde saklanabilir (atanabilir). sınıfa kadar Object
). Örnek:
kod | Tanım |
---|---|
|
Ekran çıktısı şöyle olacaktır:
|
|
Ekran çıktısı şöyle olacaktır:
|
|
Ekran çıktısı şöyle olacaktır:
Yöntem sınıftan toString() miras alınırObject |
Bu çok değerli bir özellik: biraz sonra pratikte nasıl kullanılacağını anlayacaksınız.
3. Bir nesne üzerinde bir yöntem çağırma
Bir değişken üzerinde bir yöntem çağrıldığında, yöntem aslında bir nesne üzerinde çağrılır. Bu mekanizmaya dinamik yöntem gönderimi denir.
İşte nasıl göründüğü:
kod | Tanım |
---|---|
|
Ekran çıktısı şöyle olacaktır:
|
|
Ekran çıktısı şöyle olacaktır:
|
printName()
Çağrılan yöntemin (sınıftaki Cow
veya sınıftaki Whale
) özel uygulamasının değişkenin türü tarafından değil, değişkenin başvurduğu nesnenin türü tarafından belirlendiğini unutmayın.
Değişken , Cow
bir nesneye bir referans depolar Whale
ve printName()
sınıfta tanımlanan yöntem Whale
denir.
Bu çok açık değil. Ana kuralı unutmayın:
Bir değişken üzerinde çağrılabilecek yöntemler kümesi, değişkenin türüne göre belirlenir. Ve çağrılan belirli yöntem uygulaması, değişken tarafından atıfta bulunulan nesnenin türü/sınıfı tarafından belirlenir.
Bununla her zaman karşılaşacaksınız, bu yüzden bunu ne kadar çabuk hatırlarsanız o kadar iyi.
GO TO FULL VERSION