Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Size ufak bir Java sorusu


Mirage

Öne çıkan mesajlar

Mirage said:

Aşağıdaki kod parçasında bir hata görüyor musunuz? Görüyorsanız nedir?


public class A {

public A() {
print();
}

public void print() {
System.out.println("A initialized.");
}

}


C bilgisi ile konuşayım

A() fonksiyonunun return type'ı yok. Bu default return type kullanılmasına neden olabilir ki muhtemelen int olması gerekiyor (C'de öyle en azından), return type'ı int olunca da return edilen birşey yok. ona da void desen?
Link to comment
Sosyal ağlarda paylaş

Financial, parametresiz metod tanımlamakta sorun yok.

Brigand, Kojiroh'un dediği gibi, constructor olduğu için return type'ı yok.

Kojiroh, anlamadığım dediğini. ; sadece satırın sonunda var?

Bu arada not düşeyim: Sorum daha çok Java ve OOP konusunda iyi tecrübesi olanlara yönelik.
Link to comment
Sosyal ağlarda paylaş

Yazı editlendi sanırım.
Ben baktığımda şu şekilde görünüyodu o metod:

public void print() {
System.out.println("A initialized.";);
}



Smiley vardı orda yani. Smileyleri özellikle kapatmadım bu mesajda da, yazımı alıntı edip bakabilirsiniz.

Edit: Bu arada şey dikkatimi çekti. Java'da import olaylarına çok hakim değilim o yüzden C++'taki "using namespace blabla" görevi gören bi şey var mı bilemiyorum da, System.out namespace'inde bi print() metodu daha olması lazım. Constructor içinde direkt "print()" metodu çağırmak çakışmaya yol açabilir mi acaba?
Link to comment
Sosyal ağlarda paylaş

:) Ceday, o yazdığında sonuna kadar haklısın.

Şu şekilde değiştiriyorum o zaman kodu izninizle. :)


public class A {

public A() {
print();
}

public void print() {
System.out.println("A");
}

}


Bir de ekleme yapayım, kodda doğrudan bir hata yok aslında. Hatasız compile edebilirsiniz ve yine hatasız a nesneleri oluşturup kullanabilirsiniz. Potansiyel bir hata var diyelim. Bulana şeker vercem. :)
Link to comment
Sosyal ağlarda paylaş

Sorun o değil ama. Kodu mümkün olduğunca basit tutmak için kısa yazmaya çalıştım. O yüzden mantıksız gelen taraflar oldu tabi biraz. Alın madem instance değişkeni kullansın diyosanız:


public class A {

private int n;

public A(int n) {
this.n = n;
print();
}

public void print() {
System.out.println(n);
}

}
Link to comment
Sosyal ağlarda paylaş

Valla ben hep print() metodunun çağrılmasında takılıp duruyorum.
A'yı extend eden B classında constructor metodu override edilmediği takdirde, B'den bi object yaratırsak hangi print() çağrılır ki?

Açıkçası ben her halükarda this'leri yerleştirdiğim için bilemedim :P
Link to comment
Sosyal ağlarda paylaş

Constructor override edilemez zaten. Her class kendi constructor'unu tanımlamak zorunda. Bir class'ı extend ettiysen kendi constructor'unun ilk satırında üst class'ının constructor'larından birini çağırmak zorundasın.

Hiç constructor tanımlamazsan compiler otomatik olarak parametresiz boş gövdeli constructor oluşturur. İlk satırında da üst class'ın parametresiz constructor'unu çağırır. Eğer üst class'ın parametresiz constructor'u yoksa compile hatası alırsın zaten. O zaman kendin constructor tanımlayıp super constructor'unu explicit çağırmak zorundasın.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...