2012-04-22 14 views
9

Java'da temel sınıf yapıcıyı çağırmak zorunlu mudur? C++ 'da isteğe bağlıydı, bu yüzden bunu soruyorum. "Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"Java'da Implicit constructors nedir

Yani, taban kurucu çağırmak amacı nedir:

Ben ArrayAdapter uzatmak, bu hatayı alıyorum? Nesne tabanlı sınıf kurucusu oluşturduğumda, &'u arayacaksınız, daha sonra türetilmiş sağa gelir.

+0

Bir rrayAdapter () yapıcısı olmayabilir. Temel sınıfında bir varsayılan kurucu eklerseniz, iyi olmalıdır. –

+0

İlgili: [Java hatası: Varsayılan kurucu için örtülü süper yapıcı tanımsızdır] (http://stackoverflow.com/questions/1197634/java-error-implicit-super-constructor-is-undefined-for-default-constructor). – Lion

+0

Yani, DerivedClass (int x, int y) gibi bir şey var: BaseClass (y), C++ olarak ???. sağ?? Ayrıca, yukarıdaki mekanizmada, taban sınıf kurucu sınıfında iki veya daha fazla bir şüphe daha var mıdır? – Naruto

cevap

10

Bir kodlayıcı yapıcısı, kendiniz çağırmazsanız örtülü olarak çağrılır; bu, eğer yapıcı yoksa, geçersizdir. Süper kurucuyu aramak için gerekenin nedeni, süper sınıfın genellikle bir alt sınıfa yerleştirilemeyen özel değişkenler içerebilecek şekilde inşa edilmeyi beklediği bazı durumlara sahip olmasıdır. Kurucuyu çağırmazsanız, nesneyi büyük olasılıkla geçersiz bir durumda bırakır ve bu da her türlü soruna neden olabilir.

+0

Yani, DerivedClass (int x, int y) gibi bir şey var: BaseClass (y), C++ ???. sağ?? Ayrıca, yukarıdaki mekanizmada, temel sınıf kurucu sınıfında iki veya bir kez daha bir şüphe daha var mıdır? – Naruto

+0

Evet, doğru. Java, bir kurucuda, bir temel sınıfı veya geçerli sınıftaki başka bir kurucuya iletmeyi yalnızca bir kurucu çağırmanıza izin verir, böylece temel sınıf kurucusu yalnızca bir kez çağrılabilir. – ricochet1k

0

Süper sınıfın no-args kurucusunu çağırmak gerekli değildir. Eğer süper anahtar kelime altında göstermek gibi bir args ile yapıcı, kullanıcıyı aramak isterseniz:

super(arg1, ...); 
+0

"Süper sınıfın no-args kurucusunu çağırmak gerekli değil," ama Java yine de bir çağrı ekler mi? –

İlgili konular