Yapıcının Aşırı Yüklenmesi Java

Hangi Yapıcı Aşırı Yüklemesi Java?

Java Yapıcı aşırı yüklemesi, bir sınıfın parametre listesinde farklılık gösteren herhangi sayıda kurucuya sahip olabileceği bir tekniktir. Derleyici bu yapıcıları listedeki parametre sayısını ve türlerini dikkate alarak ayırır.

Account sınıfı için geçerli kurucuların örnekleri şunlardır:

Account(int a);
Account (int a,int b);
Account (String a,int b);

Örnek 2: Yapıcı Aşırı Yüklemesini anlamak Java

) 1 Adım Kodu düzenleyiciye 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();
 }
}

) 2 Adım Kodu Kaydet, Derle ve Çalıştır.

) 3 Adım Hata = ?. Bir sonraki adıma geçmeden önce hatayı ayıklamayı deneyin Java yapıcının aşırı yüklenmesi

) 4 Adım Her sınıfın bir varsayılanı vardır Oluşturucu Java. Varsayılan aşırı yüklenmiş kurucu Java için sınıf Demosu is Demo(). Bu kurucuyu sağlamamanız durumunda, derleyici onu sizin için oluşturur ve değişkenleri varsayılan değerlerle başlatır. Bu varsayılan kurucuyu geçersiz kılmayı ve değişkenleri Örnek 1'de gösterildiği gibi istediğiniz değerlere başlatmayı seçebilirsiniz.

Ancak Demo(int a) gibi parametreli bir kurucu belirtirseniz ve varsayılan kurucuyu kullanmak istiyorsanız Java Demo(), bunu belirtmeniz zorunludur.

Başka bir deyişle, yapıcınızın aşırı yüklenmesi durumunda Java geçersiz kılındı ​​ve varsayılan kurucuyu kullanmak istiyorsunuz Java, belirtilmesi gerekiyor.

) 5 Adım 4-8 numaralı satırın açıklamasını kaldırın. Kodu kaydedin, derleyin ve çalıştırın.

Neden Constructor Overloading'e ihtiyacımız var? Java?

Yapıcı aşırı yüklemesi Java bir sınıfta birden fazla kurucuya izin verir, her biri farklı parametre listelerine sahiptir. Esnekliği artırır ve kod verimliliğini iyileştirir.

  • Nesne Oluşturmada Esneklik: Yapıcı aşırı yüklemesi, parametre sayısına veya türüne bağlı olarak nesneleri çeşitli şekillerde başlatmanıza olanak tanır.
  • Kodun Yeniden Kullanılabilirliği: this() anahtar sözcüğünü kullanarak bir oluşturucuyu diğerinden çağırarak oluşturucu mantığını yeniden kullanabilirsiniz.
  • Geliştirilmiş Okunabilirlik: Aşırı yüklenmiş oluşturucular, farklı başlatma ihtiyaçları için belirli oluşturucu seçenekleri sunarak kodun daha sezgisel olmasına yardımcı olur.
  • Varsayılan ve Özel Başlatma: Yapıcı aşırı yüklemesi, hem varsayılan hem de özel olarak başlatılmış nesneleri kolayca oluşturmanıza olanak tanır.

SSS

Inşaatçı yeni oluşturulan bir nesneyi başlatmak için kullanılan ve nesne için 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 yapıcı yazması zorunlu değildir.

Bir sınıf için kullanıcı tanımlı bir kurucu sağlanmadıysa, derleyici üye değişkenlerini varsayılan değerlerine başlatır.

  • sayısal veri türleri 0 olarak ayarlandı
  • char veri türleri boş karaktere ayarlandı('\0')
  • referans değişkenleri null olarak ayarlandı

  1. Var aynı isim sınıf olarak
  2. Bir değer döndürmemeli bile geçersiz

Örnek 1: İlk Yapıcınızı oluşturun Java

) 1 Adım Aşağıdaki oluşturucu programını yazın Java editör.

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();
  }
}

) 2 Adım Yapıcı programını kaydedin, çalıştırın ve derleyin Java ve çıktıyı gözlemleyin.

Beklenen çıktı:

Inside Constructor
Value1 === 10
Value2 === 20

Temel sınıfın bir çocuk tarafından genişletildiği bir senaryoyu 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 denir Yapıcı zincirleme.

Örnek 3: Yapıcı zincirlemeyi anlamak

) 1 Adım 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);
   }
}

) 2 Adım Kodu çalıştırın. Yapıcı zincirleme nedeniyle, DemoChild alt sınıfının nesnesi oluşturulduğunda, önce ana sınıfın Demo() yapıcısı çağrılır ve daha sonra çocuğun DemoChild() yapıcısı oluşturulur.

Beklenen çıktı:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

) 3 Adım Demo ana sınıfının yapıcısının geçersiz kılındığını gözlemleyebilirsiniz. Alt nesneniz yaratıldığında varsayılan kurucu Demo() yerine geçersiz kılınan kurucu Demo(int a)'yı çağırmak isterseniz ne olur?

Bu gibi durumlarda anahtar kelimeyi kullanabilirsiniz. "Süper" üst sınıfın geçersiz kılınan yapıcılarını çağırmak için.

Sözdizimi:-

super();
--or--
super(parameter list);

Örnek: Yapıcınız şöyle ise Demo(Dize Adı, int a), belirteceksiniz süper("Java”,5). Kullanılırsa, anahtar kelime süper'in kodun ilk satırı olması gerekiyor çocuk sınıfının yapıcısında.

) 4 Adım 26 numaralı satırın açıklamasını kaldırın ve kodu çalıştırın. Çıkışı gözlemleyin.

Çıktı:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4