Örnekler ve Uygulama ile Java'da Yapıcı Zincirleme
Yayınlanan: 2023-06-05Java'da Yapıcılar, yeni oluşturulan nesneleri başlatmak için kullanılan kod blokları olarak anlaşılabilir. Yapıcı, Java'daki örnek yöntemlere benzer. Bununla birlikte, Java'daki Yapıcılar ve yöntemler arasında çok önemli bir fark vardır - yöntemlerin bir dönüş tipi varken, Yapıcıların belirli bir dönüş tipi yoktur. Programcılar genellikle Yapıcılardan Java'da özel bir yöntem türü olarak söz eder.
Java'daki yapıcılar, sınıfla aynı ada sahiptir ve aşağıdaki gibi görünürler:
genel sınıf programım{
//bu yapıcıdır
programım(){
}
..
}
Bir kurucu başka bir kurucu içinden çağrıldığında, Java'da Yapıcı Zincirleme gerçekleşir. Ancak, Yapıcı Zincirleme konusuna derinlemesine dalmadan önce, anlayışınızı pekiştirmek için bazı örneklerle birlikte, Yapılandırıcıların Java'da nasıl çalıştığına hızlıca bir göz atalım.
İçindekiler
Java'da Yapıcılar Nasıl Çalışır?
Yapıcıların nasıl çalıştığını anlamak için bir örneğe bakalım. Diyelim ki myProgram adında bir sınıfımız var. Şimdi bu sınıfın nesnesini oluşturduğumuzda aşağıdaki ifadeyi yazmamız gerekecek:
myProgram nesnesi = yeni myProgram()
Gördüğünüz gibi, yukarıdaki örnekte kullanılan new anahtar sözcüğü, myProgram nesnesini oluşturur ve bu yeni oluşturulan nesneyi başlatmak için bir yapıcıyı çağırır.
Bu size biraz kafa karıştırıcı geliyorsa, üzülmeyin. Java'daki Yapıcıların çalışmasını daha iyi anlamak için Java'daki basit bir kurucu programa bakalım.
Java'da Temel Oluşturucu Programı
Yapıcıları kullanan aşağıdaki Java koduna bakın:
genel sınıf Testi{
Dize kitabı;
//yapıcı
Ölçek(){
this.book = “Çavdar Avcısı”;
}
genel statik geçersiz main(String[] args) {
Test nesnesi = yeni Test();
System.out.println(obj.kitap);
}
}
Çıktı:
Çavdar Tarlasında Bir Avcı
Yukarıdaki programda, sınıf Programımızın 'obj' adlı bir nesnesini yarattık. Ardından, bu yeni oluşturulan nesnenin örnek değişken adını yazdırdık. Çıktıdan da görebileceğiniz gibi, çıktı, Yapıcı'nın başlatılması sırasında 'kitap'a iletilen değerle aynıdır.
Bunun gösterdiği şey, obj nesnesi yaratıldığı anda Yapıcı'nın otomatik olarak çağrıldığıdır. Burada, mevcut nesneye atıfta bulunmak için 'this' anahtar kelimesini kullandık. Bunu yapmanın daha fazla yolu da var ve bunlardan daha sonra, Yapıcı Zincirleme'yi tartışırken bahsedeceğiz.
Java'da Yapıcı'nın temelleri yerleştikten sonra, Java'da Yapıcı Zincirleme'ye ve nasıl çalıştığına geçelim!
Yapıcıların Tek Bir Sınıf İçinde Zincirlenmesi
Ancak,Java'da tek bir sınıfı içeren yapıcı zincirleme nedir?Aynı sınıftaki bir yapıcıyı diğerinden çağırmak, o sınıf içinde oluşturucu zincirleme içerir. "This" anahtar sözcüğü, aynı sınıf içinde yapıcı zincirlemesi için sözdiziminde kullanılır. Geçerli sınıf örneğine "this" kullanıldığında atıfta bulunulur.Java'da yapıcı zincirlemenin kullanımını örnekle anlamak en iyisidir .
Temel/Ana Sınıflardan Yapıcıları Zincirleme
Java'da bir sınıf başka bir sınıftan türetilebilir; türetilen sınıfa alt sınıf, türetildiği sınıfa ise üst sınıf denir. Bir alt sınıfın kendi kurucuları olabilir ve üst sınıfının kurucularını çağırabilir.
Bir üst sınıf oluşturucu, super() terimini ve ardından gerekli girdileri kullanır. super() anahtar sözcüğü her zaman alt sınıf yapıcısının ilk satırında bulunmalıdır.
Farklı Bir İnşaatçıdan Çağrı, Bir İnşaatçı
this() anahtar sözcüğünü kullanarak, Java'daki bir kurucu aynı sınıftan başka bir kurucuyu çağırabilir. Yapıcıdaki ilk anahtar kelime her zaman this() anahtar kelimesi olmalıdır, bu sadece aynı türden başka bir kurucuyu çağırmak için kullanılabilir.
Telefon Üst Sınıf Yapıcısı
Java'daki super() anahtar sözcüğü, alt sınıf yapıcılarının üst sınıfın yapıcısını çağırmasına izin verir. Yalnızca alt sınıfın üst sınıfının oluşturucusunu çağırmak için kullanılabilen super() anahtar sözcüğü, her zaman alt sınıf oluşturucusunun ilk satırı olmalıdır.
Yapıcılar farklı bir sırayla düzenlenirse, Java programları farklı davranabilir. Bir sınıfın birçok kurucusu varsa ve bunlardan biri başka bir kurucuyu çağırmak için this() anahtar sözcüğünü kullanıyorsa, kurucuların sırasını değiştirmek programın davranışını değiştirebilir.
Init Bloğu Kullanarak Yapıcıları Zincirlemenin Farklı Bir Yolu
Başlatma bloğu kullanmak, Java'da yapıcı zincirleme için başka bir yaklaşımdır .Başlatma bloğu olarak bilinen bir kod bölümü,
Java'da Yapıcı Zincirlemenin Temelleri
Aynı sınıftaki başka bir Yapıcıdan bir Yapıcı çağırdığımızda, olan şey Yapıcı Zincirleme olarak bilinir. Yapıcı Zincirleme yapmanın birincil amacı, parametreleri bir grup farklı kurucudan geçirmek ve bunları yalnızca tek bir yerde başlatmaktır. Bu şekilde, kullanıcılara farklı kurucular sağlanabilirken, tüm başlatmalarınızı tek bir konumda tutma şansı elde edersiniz.
Yapıcı Zincirleme gerçekleştirmiyorsanız ve iki farklı Yapıcı bir parametre gerektiriyorsa, bu parametreyi iki kez başlatmanız gerekir. Artı, başlatma her değiştiğinde, yalnızca bir yapıcı yerine tüm kurucularda ilgili değişiklikleri yapmanız gerekecektir.
Genel bir kural olarak, her zaman daha az argümanı olan Yapıcılardan daha fazla argümanı olan Yapıcıları çağırmalısınız. Ayrıca, sınıfta birden fazla Yapıcıyı aşırı yükleyebileceğimizin de farkında olmalısınız. Ancak, bir nesne oluşturulduğunda, yalnızca belirli bir Oluşturucu çağrılır. Java'da programlama yaparken, farklı nesneler oluşturmadan birden çok kurucuyu birbirinden çağırmanız gereken pek çok durum olabilir. Bir Oluşturucuyu başka bir oluşturucudan çağırma mekanizması ve söz konusu Oluşturucu başka bir oluşturucuyu çağırdığında, yapıcı zincirleme olarak bilinir.
Dünyanın en iyi Üniversitelerinden çevrimiçi olarakYazılım Kurslarıöğrenin. Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
En üst düzeyde netlik sağlamak için Yapıcı Zincirleme ile ilgili aklınızda tutmanız gereken iki temel şey vardır:
- Yapıcı Zincirlemenin birincil amacı kodu korumaktır. Buradaki fikir, programınız genelinde yeniden kullanılabilen tek bir kod parçası yazmanıza yardımcı olmaktır. Bu şekilde, kodunuz yalnızca temiz ve okunabilir olmakla kalmayacak, aynı zamanda tüm Yapıcılar yerine yalnızca tek bir konumda gerçekleşen tüm düzeltmeler ve değişikliklerle yönetimi çok daha kolay olacaktır.
- Çağrılan Yapıcı, ayrı bir nesne yaratmaz. Bunun yerine, başka bir oluşturucuyu çağırmak için o anda çalışan nesneyi kullanır. Aynı zamanda bir kurucu olması dışında, Yapıcınızın içinde farklı bir yöntemi çağırmak gibidir.
Önceki örnekte gördüğünüz gibi, bu anahtar kelimeyi Yapıcı'nın parametrelerine erişmek için kullandık. Aynı şekilde, Yapıcı Zincirleme de öncelikle iki anahtar kelime gerektirir. İşte o iki anahtar kelime:
- this – Yöntem temsili, geçerli bir sınıf oluşturucusunu çağırır.
- super – Yöntem temsili, anında bir süper veya üst sınıf oluşturucu çağırır.
Ek olarak, Java'da Yapıcı Zincirleme açısından birkaç önemli terim ve tanımın farkında olmalısınız:
- Yapıcı Çağrısı: Bir Yapıcıyı çağırdığınızda ve bu Yapıcı başarılı bir şekilde çağrıldığında, buna Yapıcı Çağrısı denir.
- Yapıcı Yürütme: Yapıcı çağrıldığında, kontrol, Yapıcı gövdesindeki ifadeleri yürütmeye başlar. Yapıcı yürütme olarak bilinir.
Java'da Yapıcı Zincirlemenin Temel Kuralları
Yapıcı Zincirleme'nin temelleri yerleştikten sonra, Java'da Yapıcı Zincirleme ile çalışmanın bazı temel kurallarına bakalım:
- this() yalnızca aynı Oluşturucuya ait parametreleri çağırabilir.
- super() yalnızca anlık üst sınıf Yapıcıyı çağırabilir.
- this() ve super(), Yapıcı'daki ilk ifade olmalıdır.
- Bu () ve super() aynı Yapıcı içinde kullanılamaz çünkü her iki kişinin de ilk ifade olması gerekir ki bu pratik olarak mümkün değildir.
- this() ifadesini içermeyen en az bir Yapıcı olması gerektiğinden, aynı sınıfın tüm Oluşturucularına this() ekleyemezsiniz.
- Java'da Oluşturucuların çağrılması ve yürütülmesi zıt olarak gerçekleşir. Yani, Yapıcılar A, B, C sırasına göre çağrıldıysa, yürütme C, B, A sırasına göre olacaktır.
Örneğin, burada, farklı Oluşturucuları aşırı yükleyerek çalışan iki ayrı sınıfımız var. Yapıcıları 2, 1, 4, 3, 5 sırasına göre çalıştırmak istiyoruz.
Yapıcıları sırayla çalıştırmak için, yapıcıları 5, 3, 4, 1, 2 gibi tam ters sırada çağırmamız gerekir, aşağıdaki örneğe bakın.
sınıf Ebeveyn
{
Ebeveyn()// 1
{
this(“merhaba”);
System.out.println(“Ana 0 arg yapıcı 1'de”);
}
Ebeveyn(Dize mesajı)// 2
{
System.out.println(“Parent(String) yapıcı 2'de”);
}
}
sınıf Yapıcı Ebeveyni genişletir
{
Yapıcı()// 3
{
this(10);// 5 numaralı kurucu çağrılıyor
System.out.println(“Kurucu 0 arg yapıcı 3'te”);
}
Yapıcı(Dize mesajı)// 4
{
super();//1 numaralı üst sınıf yapıcısı çağrılıyor
System.out.println("in Yapıcı(String msg) arg yapıcı 4");
}
Yapıcı(int i)// 5
{
this(“merhaba”);//4 numaralı kurucu çağrılıyor
System.out.println("in Yapıcı(int i) yapıcı 5");
}
// ana() yöntemi
genel statik geçersiz main(String[] args)
{
Yapıcı cobj = yeni Yapıcı(); // 3 numaralı kurucu çağırılıyor
}
}
Çıktı:
Ebeveyn(Dize) yapıcı 2'de
Ebeveyn 0'da arg yapıcı 1
Yapıcıda(String msg) arg yapıcı 4
Yapıcı(int i) yapıcı 5'te
Yapıcı 0'da arg yapıcı 3
Java'daki Yapıcılar ve Yapıcı Zincirleme ile ilgili tüm kavramları son bir örnekle özetlemek:
sınıf Emp
{
genel Dize E-Adı;
public int EKazançlar;
genel Dize adresi;
genel Emp()
{
this(“Rahul”);
}
genel Emp(Dize adı)
{
this(isim, 140035);
}
public Emp(Dize adı, int sal)
{
this(isim, sal, “Yeni Delhi”);
}
kamu Çalışanı(Dize adı, int sal, Dize ekle)
{
this.EName=isim;
this.EEarnings=sal;
this.adres=ekle;
}
geçersiz disp() {
System.out.println(“Ad: “+EAd);
System.out.println(“Maaş: “+EKazanç);
System.out.println(“Adres: “+adres);
}
genel statik geçersiz main(String[] args)
{
Çalışan nesnesi = yeni Çalışan();
obj.disp();
}
}
Çıktı:
Çalışan Adı: Rahul
Çalışan Maaşı: 140035
Çalışan Adresi: Yeni Delhi
Çözüm
Bununla birlikte, bu makalenin sonuna geliyoruz. Bunun Java'da Yapıcı Zincirleme konusundaki şüphelerinizi açıklığa kavuşturduğunu ve anlayışınızı daha da sağlamlaştırdığını umuyoruz. upGrad'da, dünyanın her yerinden öğrencilerin tam potansiyellerine ulaşmalarına ve kariyerlerinde başarılı olmalarına yardımcı olmaya inanıyoruz. Kurslarımız hem yeni başlayanlar hem de deneyimli profesyoneller göz önünde bulundurularak tasarlanmıştır.
Böyle bir kurs , özellikle ilk kez iş arayanlar için tasarlanmış upGrad'ın Yazılım Mühendisliğinde İş Bağlantılı PG Sertifikasyonudur. Kurs içeriğine göz atın ve bugün kaydolun! Sektör uzmanlarından ve önde gelen profesyonellerden Java, DSA, OODAP, JavaScript, MERN, AWS vb. gibi ilgili tüm Yazılım Mühendisliği becerilerini öğrenin.
S: Java'da ikiden fazla kurucuyu zincirlemek mümkün mü?
Java, maksimum iki yapıcı zincirine izin verir. Bunu yaparak daha karmaşık nesneler oluşturabilir ve kod tekrarını azaltabilirsiniz.
S: Java'daki bir oluşturucu kendisini çağırdığında ne olur?
Java'da kendisini çağıran bir oluşturucu, yığın taşması hatasına ve belirsiz bir döngüye neden olur.
S: Java'daki varsayılan oluşturucu nasıl görünüyor?
Java'da varsayılan bir kurucu, hiçbir girdi kabul etmeyendir. Sınıfta bildirilmiş bir kurucu yoksa, otomatik olarak üretilir.