bu kodu bakmak Lütfen neden uzanır 8 9
değil 0 9
mu? , Sup
yapıcı printA()
çağırdığındaJava süper değişken bir 0
8
A
cevap
14
(sınıf Sup
aynı adı yöntemini geçersiz kılar) sınıfı Sub
arasında printA
yöntemi yürütür, yani hala 0
olan sınıf Sub
arasında a
değişkeninin değerini verir Sub
örnek değişkenleri henüz başlatılmamış olduğundan (yalnızca Sup
yapıcısı bittikten sonra başlatılırlar).
+2
Ayrıca, bazı kod standartlarının, kurucularda "final" veya "private" olarak adlandırılan tüm yöntemlerin kullanılmasını gerektirmesi de budur. Bu durumlara neden olan geçersiz kılmaların önüne geçmek için. – Kiskae
Yapıcının, düşündüğünüz sırada çağrıldığından emin misiniz? –
@ cricket_007: Tabi buna denir. Siz ** bunu Java'da çağırmaktan kaçınamazsınız. –
@ T.J.Crowder Serileştirme veya klonlama kullanarak bunu önleyebilirsiniz. – Flown