Java'da Oluşturucu nedir?
CONSTRUCTOR , yeni oluşturulan bir nesneyi başlatmak için kullanılan ve nesneye bellek ayrıldıktan hemen sonra çağrılan özel bir yöntemdir. Nesneleri, nesne oluşturma sırasında istenen değerlere veya varsayılan değerlere başlatmak için kullanılabilir. Kodlayıcının bir sınıf için kurucu yazması zorunlu değildir.
Bir sınıf için kullanıcı tanımlı bir yapıcı sağlanmadıysa, derleyici üye değişkenleri varsayılan değerlerine başlatır.
- sayısal veri türleri 0 olarak ayarlanmıştır
- char veri türleri boş karakter ('\ 0') olarak ayarlandı
- referans değişkenleri null olarak ayarlandı
Bu eğitimde öğreneceksiniz-
- Yapıcı oluşturma kuralları
- Java'da Yapıcı Aşırı Yüklemesi
- Yapıcı Zincirleme
Java Oluşturucu oluşturma kuralları
- Sınıf ile aynı adı taşıyor
- Geçersiz bile olmayan bir değer döndürmemelidir
Örnek 1 : Java'da İlk Oluşturucunuzu Oluşturun
Adım 1) Aşağıdaki yapıcı programını Java editörüne yazın.
class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}
Adım 2) Yapıcı programını Java'da Kaydedin, Çalıştırın & Derleyin ve çıktıyı gözlemleyin.
Çıktı:
Inside ConstructorValue1 === 10Value2 === 20
Java'da Yapıcı Aşırı Yüklemesi
Java Yapıcı aşırı yüklemesi, bir sınıfın parametre listesinde farklılık gösteren herhangi bir sayıda kurucuya sahip olabileceği bir tekniktir. Derleyici, listedeki parametrelerin sayısını ve türlerini dikkate alarak bu kurucuları farklılaştırır.
Hesap sınıfı için geçerli kurucu örnekleri şunlardır:
Account(int a);Account (int a,int b);Account (String a,int b);
Örnek 2 : Java'da Yapıcı Aşırı Yüklemesini anlamak için
Adım 1) Editöre kodu yazın.
class Demo{int value1;int value2;/*Demo(){value1 = 10;value2 = 20;System.out.println("Inside 1st Constructor");}*/Demo(int a){value1 = a;System.out.println("Inside 2nd Constructor");}Demo(int a,int b){value1 = a;value2 = b;System.out.println("Inside 3rd Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();Demo d2 = new Demo(30);Demo d3 = new Demo(30,40);d1.display();d2.display();d3.display();}}
Adım 2) Kodu Kaydedin, Derleyin ve Çalıştırın.
Adım 3) Hata =?. Java yapıcısı aşırı yüklemesinin bir sonraki adımına geçmeden önce hatayı deneyin ve hatayı ayıklayın
Adım 4) Her sınıfın Java'da varsayılan bir Oluşturucusu vardır. Demo sınıfı için varsayılan aşırı yüklenmiş yapıcı Java , Demo () 'dur . Bu yapıcıyı sağlamazsanız, derleyici onu sizin için oluşturur ve değişkenleri varsayılan değerlere başlatır. Örnek 1'de gösterildiği gibi, bu varsayılan kurucuyu geçersiz kılmayı ve değişkenleri istediğiniz değerlerle başlatmayı seçebilirsiniz.
Ancak Demo (int a) gibi parametreleştirilmiş bir kurucu belirtirseniz ve varsayılan yapıcı Java Demo () 'yu kullanmak isterseniz, bunu belirtmeniz zorunludur.
Başka bir deyişle, Java'daki aşırı yük oluşturucunuzun geçersiz kılınması ve varsayılan oluşturucu Java'yı kullanmak istemeniz durumunda, bunun belirtilmesi gerekir.
Adım 5) Açıklamalı satır # 4-8. Kodu Kaydedin, Derleyin ve Çalıştırın.
Yapıcı Zincirleme
Temel sınıfın bir çocuk tarafından genişletildiği bir senaryo düşünün. Alt sınıfın bir nesnesi oluşturulduğunda, ilk olarak ana sınıfın yapıcısı çağrılır. Buna Yapıcı zincirleme denir .
Örnek 3: Yapıcı zincirlemeyi anlamak için
Adım 1) Aşağıdaki kodu editöre kopyalayın.
class Demo{int value1;int value2;Demo(){value1 = 1;value2 = 2;System.out.println("Inside 1st Parent Constructor");}Demo(int a){value1 = a;System.out.println("Inside 2nd Parent Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){DemoChild d1 = new DemoChild();d1.display();}}class DemoChild extends Demo{int value3;int value4;DemoChild(){//super(5);value3 = 3;value4 = 4;System.out.println("Inside the Constructor of Child");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);System.out.println("Value1 === "+value3);System.out.println("Value2 === "+value4);}}
Adım 2) Kodu çalıştırın. Yapıcı zincirleme sayesinde, DemoChild alt sınıfının nesnesi oluşturulduğunda, önce ana sınıfın yapıcısı Demo () çağrılır ve daha sonra alt yapıcının DemoChild () öğesi oluşturulur. Beklenen Çıktı =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
Adım 3) Demo ana sınıfın kurucusunun geçersiz kılındığını gözlemleyebilirsiniz. Alt nesneniz oluşturulduğunda varsayılan kurucu Demo () yerine geçersiz kılınan yapıcı Demo'yu (int a) çağırmak isterseniz ne olur?
Bu gibi durumlarda, üst sınıfın geçersiz kılınan kurucularını çağırmak için "süper" anahtar kelimesini kullanabilirsiniz .
Sözdizimi:-
super();--or--super(parameter list);
Örnek: Eğer kurucunuz Demo (String Name, int a) gibiyse super ("Java", 5) belirteceksiniz Eğer kullanılıyorsa super anahtar kelimesinin alt sınıfın yapıcısındaki ilk kod satırı olması gerekir .
Adım 4) 26 numaralı satırın yorumunu kaldırın ve kodu çalıştırın. Çıktıyı Gözlemleyin.
Çıktı:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4