Skip to main content

Java Programlama : Conctructorslar ve Kullanım Şekilleri

Bugün Constructors kavramını incelemeye alacağız.  Constructors yani  Kurucu metodlar yada diğer bir ismi ile yapıcı metodlar.    Contructors yani Kurucu metodlar Nesneye Yönelik programlamanın önemli temel taşlarından biridir. Java Programlama dilinde  Kurucu metodlar   sınıf ismi ile aynı  isimde tanımlanan   bir metod şeklinde düşünülebilir. Ama normal metodlardan farklı olarak  bir değer döndürmezler.   

Örnek olarak aşağıdaki gibi bir yapıyı  kullanabiliriz.

 

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
 
      public ogrenci() {
      }
	  // Kurucu metod tanımlaması yapıldı
}

Bir sınıf birden fazla Constructors’a sahip olabilir.  Bunu aklımızdan çıkarmayalım. Peki  biz Constructors dediğimiz yapıları hangi   amaçlar için kullanırız. Şimdi bunları incelemeye çalışalım.

Constructorslar’ı  oluşturduğumuz bir sınıf içersindeki değişkenlere   başlangıç değeri atamak için kullanabiliriz.  Sınıf içinde tanımladığımız  değişkenler bir başlangıç değerine sahip olmak zorunda değillerdir. Eğer programcı olarak biz bir başlanıç değeri atamazsak   Java   değişkenin türüne göre  Default değerlerini verir. Örneğin bin Integer tipi değişken için başlangıç değeri 0 dır. Ama diyelim ki  biz başlangıç değerini   default olarak değilde başka işlemler sonucunda belirlemek istiyoruz.  O zaman  Constructor Method devreye giriyor. Demin  oluşturduğum öğrenci sınıfı üzerinde  örneklemeye devam edersek. Örneğin  Öğrenci sınıfın  Yas   isminde ve integer tipinde bir değişken olsun. Ve   biz oluşturacağımız her öğrencinin 20 yaşında olacağını varsayalım.

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
      private int Yas;
      public ogrenci() {
	  this.Yas=20;
	  // this ile bu sınıfın   global bir  değiskenine kullanmak istediğimizi bildirdik
	  // sınıfın Yas isimli değişkenininin 20 değerine eşit olacağını bildirdik.
      }
	  // Kurucu metod tanımlaması yapıldı
}

Yapılandırıcı metodlar dışardan parametre  alabilirler. Örneğin yukarıdaki örnekte   Yas değerini  kendimiz 20 olarak belirlemiştik. Bu değerin belli olmadığını programın bir takım islemler yaptıktan sonra bu değeri paramtre olarak aldığın düşünelim. O   zaman şu şekilde bir yapı ile karşılaşırdık.

 

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
      private int Yas;
      public ogrenci(int Yas) {
	  this.Yas=Yas;
	  // this ile bu sınıfın  bir  değiskenini kullanmak istediğimizi bildirdik
	  // sınıfın Yas isimli değişkenini  eşit olsun  Kurucu metodda parametre olarak aldıgımız
	  // Yas  ismindeki değişkenin değerine.
      }
	  // Kurucu metod tanımlaması yapıldı
}

Görüldüğü gibi önceki örnekten  tek farkı  Kurucu metod olarak tanımlanan   metodun  int Yas isimli parametre almasıdır.

Bir sınıf birden fazla Kurucu metoda sahip olabilir.  Örneğin    oluşturduğumuz öğrenci sıfının  parametreli ve paramatresiz olmak üzere iki adet kurucu metodu olduğunu varsayalım.   Bu sayı ikiden de fazla olabilir tabiki  . Ama  mantığı kavramak açısından iki kurucu metod yeterlidir. Bu şekilde bir yapıyı  oluşturmak için kullanacağımız kodlar ;

 

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
      private int Yas;
 
	  public ogrenci() {
	  // Parametre almayan metod.  Eğer sınıf parametre gönderilmeden
	  // oluşturulursa bu  Kurucu metod çalışır.  Örnek Cağarilma Sekli
	  // ogrenci benimOgrencim=new ogrenci();
      }
 
	 public ogrenci( int Yas ) {
	  this.Yas=Yas;
      }
     // Parametre alan kurucu metod.  Eğer sınıf bir parametre değeri ile oluşturulmak istenirse
	 // calisir.  Ana programda su sekilde cağrılabilir ogrenci benimOgrencim=new ogrenci(30);
}

Görüldüğü gibi iki adet kurucu metoda sahibiz. Sorulması gereken soru şudur. Biz bu sınıfı oluşturmak istedğimizde hangi kurucu metod çağrılacak ?  Bu sorunun cevabı tamamen sınıfın   oluşturulma biçimiyle alakalıdır. Java derleyicisi bu sınıfın iki adet   Kurucu metodu olduğunu biliyor ve bizim gönderdiğimiz  veya göndermediğimiz parametrelere göre hangi  Kurucu metodu kullanacağına karar veriyor.

Örneğin Ana programda  Öğrenci sınıfını şu şekilde çağardığımızı varsayalım

ogrenci benimOgrencim=new ogrenci(30);

Java  hemen parametreleri kontrol edecek . Görüldüğü üzere 30 değeri  gönderilmiş kurucu metodu çağarılırken. Java  tanımladığımız kurucu metodlara bakacak ve  göre hangisini kulnnacağına karar verecektir.  Bizim parametre alan ve almayan olmak üzere iki adet kurucu metodumuz vardı .    Java  kurucu metodu çağarırken bir parametre ile çağardımızı görecek ve

 public ogrenci( int Yas ) {
	  this.Yas=Yas;
      }

kurucu metodunu çağaracaktır. Ve oluşturduğumuz  her öğrencinin Yas değeri 30 ‘a eşit olacaktır.

 

Constructorsların kullanıldığı diğer bir alan ise  oluşrulacak olan  nesneye  bellekten yer ayırma işlemidir.  Java da bir nesnenin örneğini oluşturmak için new  komutunun kullanıldığını biliyoruz.   new aslında sınıfımızın constructorını çağaran özel bir komuttur.

Aklımızdan çıkarmamız gereken bir nokta daha var.  Java bir sınıf oluşturur ve bu sınıfın Constructor metodunu oluşturmazsak java bizim yerimize   parametre almayan   boş bir  kurucu metodu  oluşturur.     Ve bu kurucu metoda Java dilinde  default Constructor adı verilir.

 

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
      private int Yas;
 
	  public ogrenci() {
	   // Bu Boş  yani parametre almayan kurucu metod her halükarda  Java
	   // tarafından oluşturulur.
      }
 
}

Bir noktayı daha kaçırmamak lazım. Eğer biz  parametre alan bir Constructor oluşturursak  default  constructor yazılmış varsayılmaz. 

 

Constructorlar ile çalışırken aklımızdan çıkarmamız gereken  diğer önemli bir nokta  “  Bir constructor’dan başka bir constructor çağrılabilir “ olmasıdır.  Bu çağırma işlemini ilk satırda yapmamız gerekmektedir.  Örneğin şu şekilde bir çağrım yapıldığında  ;

 

 

package yapilandiricimetodlar;
 
public class ogrenci {
// Sınıf tanımlaması yapılıyor
      private int Yas;
 
	  // Default Constructor
	  public ogrenci() {
	   this(30); 
 
	   // Sınıfın ( Bu örnekte Öğrenci sınıfına tekabul ediyor)
	   // parametreli olan Kurucu metodu çağariliyor.
      }
       // Parametreli Constructor
	  public ogrenci(int Yas ) {
	    this.Yas=Yas;
      }
 
}

Örnekte görüldüğü gibi Default Constructors’ın ilk satırından diğer bir Kurucu metoda çağrı yapılıyor.   Ve parametre alan  Kurucu metod yapması gereken işlemleri yapıyor.

Öğrendiğimiz önemli noktaları listeleyecek olursak  :

  • Constructorlar sınıf isimi ile aynı isimdedirler
  • Constructorlar global değişkenlere başlangıç değeri  atamak için kullanabilirler.
  • Constructorlar  bir  obje için bellekten yer ayırmak amaçlı  kullanılabilirler.
  • Eğer bir sınıf oluşturup constructor tanımlamazsak java bizim için boş bir construtor tanımlar  ve bu boş constructor  Default Constructor olarak adlandırılır.
  •  Eğer biz  parametre alan bir Constructor oluşturursak  default  constructor yazılmış varsayılmaz.
  • Bir sınıf birden fazla kurucu metoda sahip  olabilir. Java  hangi   kurucu metodu kullanacağına   çağrı yaparken kullandığımız parametrelere göre karar verir.
  • Bir   Kurucu metod içersinden başka bir kurucu metod çağarılabilir. Ama bu çağrının ilk satırda  olması  başka bir  tabirle ilk işlenecek komut olması gerekmektedir.

Başka bir makelede görüşmek dileğiyle 🙂

 

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Aytaç Cici

İstanbul Üniversitesi Bilgisayar Mühendisliği mezunu bir Yazılım Geliştirici. Çeşitli zamanlarda Java, PHP, C# ve Delphi gibi diller kullanarak yazılım geliştirmiştir. Bir dönem SEO alanında da çalışmalar yapmıştır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Email
Print