İkinci bir programda Kutu sınıfı iki nesne tanımlama gereği duyduğumuzu varsayalım. Buna ornek olarak Şekil 3.2.1 de kututesti1.java programı tanımlanmıştır.
import java.io.*;
class Kutu
{
double en;
double boy;
double yukseklik;
}
class kututesti1
{
public static void main(String args[])
{
double hacim;
Kutu benimkutum1=new Kutu();
benimkutum1.en=10.0;
benimkutum1.boy=20.0;
benimkutum1.yukseklik=30.0;
hacim=benimkutum1.en*benimkutum1.boy*benimkutum1.yukseklik;
System.out.println("Benim kutumun hacmi : "+hacim);
Kutu benimkutum2=new Kutu();
benimkutum2.en=5.0;
benimkutum2.boy=10.0;
benimkutum2.yukseklik=15.0;
hacim=benimkutum2.en*benimkutum2.boy*benimkutum2.yukseklik;
System.out.println("Benim kutumun hacmi : "+hacim);
}
}
Şekil 3.2.1 Kutu sınıfı iki nesne tanımlayan kututesti1.java programı
Bu programın çıktısı :
Benim kutumun hacmi : 6000.0
Benim kutumun hacmi : 750.0
Bu programda Kutu sınıfından benimkutum1 ve benimkutum2 değişkenler tanımlanmıştır. Bu basit programda bile en,boy ve yükseklik değikenlerini iki defa çağırmak listenin uzamasına sebep olmuştur. Gerçek uygulamalarda ise çok daha yüksek sayıda değişken içeren sınıflar oluşturulabilir ve bu sınıflarda oluşturulan toplam nesne sayısı da çok fazla olabilir. Bu yüzden nesneyi ilk tanımlarken aynı zamanda değişkenlerinin değerlerini de tanılayabilirsek, çok daha okunaklı ve kısa bir bilgisayar listesiyle aynı işi yapabiliriz. Bu iş için kurucu (constructor) adı verilen metodlar kullanılır. Kurucu metodları diğer metodlardan biraz farklıdır. Once metod önüne metod değişken türü gelmez ve metod dışına hiçbir değişken göndermezler. İsimleri de herzaman sınıf(class) ismiyle aynı olur. Şekil 3.2.1 deki programı kurucu (constructor) metodu kullanarak tekrar yazalım.
import java.io.*;
class Kutu
{
double en;
double boy;
double yukseklik;
//kurucu metod kutu
Kutu(double e,double b,double y)
{
en=e;
boy=b;
yukseklik=y;
}
}
class kututesti2
{
public static void main(String args[])
{
double hacim;
Kutu benimkutum1=new Kutu(10.0,20.0,30.0);
hacim=benimkutum1.en*benimkutum1.boy*benimkutum1.yukseklik;
System.out.println("Benim kutumun hacmi : "+hacim);
Kutu benimkutum2=new Kutu(5.0,10.0,15.0);
hacim=benimkutum2.en*benimkutum2.boy*benimkutum2.yukseklik;
System.out.println("Benim kutumun hacmi : "+hacim);
}
}
Şekil 3.2.2 Kutu sınıfı iki nesneyi kurucu(constructor) metodu yardımıyla tanımlayan kututesti2.java programı
Bu programın çıktısı :
Benim kutumun hacmi : 6000.0
Benim kutumun hacmi : 750.0
Görüldüğü gibi bu program bir öncekinin aynı sonucu vermiştir. Faket burada bir önceki programda yapılan
Kutu benimkutum1=new Kutu();
Tanımı yerini
Kutu benimkutum1=new Kutu(10.0,20.0,30.0);
Tanımına bırakmış ve kututesti2 sınıfı yazılırken en ,boy yükseklik değişkenlerinin yeniden tanımlanması ihtiyacını ortadan kaldırmıştır.