Yükleniyor...

Java'da Yapıcılar

Box.java içinde size adlı bir int alanı ve size = n; yapan bir Box(int n) yapıcısı olan Box sınıfını yazın. Hall.java içinde Box b = new Box(4); ile bir box kurun, sonra b.size yazdırın. Her iki dosyayı derleyin ve java Hall çalıştırın. Ekran bir satır göstermelidir: 4. new'e verdiğiniz sayı yapıcıya ulaşır ve yapıcı, main devam etmeden önce onu nesnede saklar. Alanı kurulum anında — yapıcının içinde — ayarlamak bu sayfanın öğrettiği şeydir.

new kurarken çalışan bir metot

Yapıcının adı sınıfın adıyla aynıdır. void dönüş tipi yoktur; başka bir dönüş tipi de yoktur. main new Box(4) yazdığında Java nesneyi kurar ve o yapıcıyı n olarak 4 ile çalıştırır. Yapıcı bitince değişken hazır nesneyi tutar. Bu sayfanın tüm işi budur: bir değeri new'e geçirin, yapıcının onu alana saklamasına izin verin, sonra alanı yazdırarak saklamanın işe yaradığını görün.
Önce Box.java oluşturun. Public class satırı public class Box'tır. Burada eski bir Cup veya Chip sınıf adı bırakmayın. Süslü parantezlerin içinde int size; bildirin. Sonra yapıcıyı yazın: Box(int n) { size = n; }. Bu sayfada parametre adını size'dan farklı tutun ki atama this sözcüğü olmadan net olsun. Box.java içinde main yoktur. Derlemeden önce kaydedin.
Alan satırı tek başına 4'ü nesneye koymaz. Yapıcı gövdesi, new onu çağırdığında bu işi yapar. Yapıcıyı atlayıp yalnızca alanı bildirirseniz, sonraki new Box(4) uyuşmaz ve javac çağrıdan şikâyet eder. Box.java içinde her iki parçayı tutun: alan ve içine yazan yapıcı.

Box with constructor

java
public class Box {
    int size;

    Box(int n) {
        size = n;
    }
}

Hall, 4'ü new Box'a geçirir

Aynı klasörde Hall.java oluşturun. Public class satırı public class Hall'dır. main içinde Box b = new Box(4); yazın, sonra System.out.println(b.size);. Argüman 4, yapıcı parametresi n'e gider. Bu sayfada ayrı bir b.size = 4; satırına ihtiyacınız yoktur — yapıcı değeri zaten sakladı. Yazdırma satırı, yapıcının ne yaptığını tahmin etmeden görmeniz içindir.
Hall'ü main'i tutan sınıf olarak bırakın. Bu ders için main'i Box içine koymayın. İki dosyalı biçim önceki nesne ve alan sayfalarıyla uyumludur: bir dosya tipi tanımlar, diğeri kurar ve kullanır. Dosyayı yeniden adlandırıp eski bir public class Shelf satırı bırakırsanız, adlar yeniden uyuşana kadar javac reddeder.

Hall builds one box

java
public class Hall {
    public static void main(String[] args) {
        Box b = new Box(4);
        System.out.println(b.size);
    }
}

Her iki dosyayı tutan klasörden javac Box.java Hall.java çalıştırın. İkisi de tamam olduğunda önce Box.java'yı, sonra Hall.java'yı derleyebilirsiniz. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Hall çalıştırın — java Hall.java değil, java Box da değil. Çalıştırma komutundan .java uzantısını çıkarın. main'i tutan sınıfı başlatın. Aynı komutlar Windows'ta ve macOS'ta çalışır.
Program bir satır yazıp durmalıdır: 4. Sizden yazmanızı istememelidir. Terminal klavye girişi bekliyorsa, eski bir alıştırmadan kalan bir nextLine çağrısı hâlâ bir dosyadadır. O çağrıyı silin; Hall'de new Box(4) ile yazdırmayı, Box'ta yapıcıyı tutun. Bekleyen imleç bir yapıcı sorunu değildir; yanlış yerde duran eski giriş kodudur.
Çalıştırmayı bir kez adım adım izleyin. Java Hall.main'den başlar. new Box(4) ifadesi bir Box kurar ve Box(int n)'i n eşit 4 ile çağırır. Gövde size = n yazar, böylece o nesnenin size'ı 4 olur. Sonra main b.size yazdırır ve ekran 4 gösterir. Başka bir şey yazılmamalıdır. ok, 3 veya bir Cup kalıntısı görüyorsanız, bu sayfanın Hall programını çalıştırmıyorsunuz demektir.
Yalnızca yapıcı bir int isterken argümansız new Box() yazarsanız javac reddeder. Çağrıyı yapıcının parametre listesiyle eşleştirin. Yapıcı adının önüne void eklerseniz bu sıradan bir metot olur, yapıcı olmaz ve new Box(4) bu sayfanın beklediği gibi o gövdeyi çalıştırmaz. Başlık Box(int n) gibi görünmelidir; void Box(int n) veya static int Box(int n) değil.

new'den sonra atamayla karşılaştırma

Alanlar sayfasında new Cup() sonrasında c.fill = 3; yazıyordunuz. Bu hâlâ çalışır. Bu sayfa saklamayı yapıcının içine taşır, böylece değer nesne kurulurken ayarlanır. c.fill = 3; içeren kalmış bir Cup demosu başka bir derstir. Bu sayfa için Box, Hall ve new Box(4) tutun. Hall'de hâlâ c.fill = 3; varsa ve bu klasörde Cup sınıfı yoksa o satırı kaldırın. Derleyici sizin için bir Cup uydurmaz.
System.out.println(b); ile yalnız b'yi yazdırmak temiz bir 4 göstermez. Saklanan sayıyı görmek için b.size yazdırın. Nesne referansı tek başına alan değeri değildir. Bu kalıbı alanlar sayfasında öğrendiniz; yapıcının işini kontrol ederken burada da onu koruyun.
Başka programlarda new'den sonra hâlâ alan atayabilirsiniz. Bu ders yalnızca yapıcı yolunu seçer, böylece ilk yararlı değer kurulum anında gelir. Bu sayfada aynı Hall demosunda her iki stili karıştırmayın. Tek net yol yeter: new'e argüman, yapıcıda saklama, alanı yazdırma.

İki box, iki size

Her new Box(...) yapıcıyı ayrı bir nesne için yeniden çalıştırır. Box a = new Box(2); ve Box b = new Box(9); yazıp her iki size alanını yazdırabilirsiniz. İlk çağrı bir nesneye 2 saklar. İkinci çağrı başka bir nesneye 9 saklar. İki nesne tek bir size yuvasını paylaşmaz.

Hall builds two boxes

java
public class Hall {
    public static void main(String[] args) {
        Box a = new Box(2);
        Box b = new Box(9);
        System.out.println(a.size);
        System.out.println(b.size);
    }
}

Yeniden derleyin ve çalıştırın: javac Box.java Hall.java, sonra java Hall. Ekran bir satırda 2, sonraki satırda 9 göstermelidir. Her yapıcı çağrısı kendi argümanını kendi nesnesinde sakladı. Box b = a; yazmak ikinci bir nesne kurmaz — iki size istediğinizde iki new Box(...) çağrısı kullanın. Referans kopyalamak, yapıcıyı iki kez çağırmakla aynı değildir.
Her iki satır aynı sayıyı gösteriyorsa, her new'in farklı bir argüman geçirdiğini ve a.size ile b.size'ı bu sırayla yazdırdığınızı kontrol edin. javac ikinci new'de durursa eksik bir parantez veya eski dosyadan yanlış bir sınıf adı arayın. İlk satırı yapıştırıp argümanı değiştirmeyi unuttuğunuzda ikinci çağrıdaki küçük yazım hataları yaygındır.

this için ne kalır

Bu sayfa farklı adlarla size = n; kullanır. Sonraki bir sayfa — this — adlar çarpıştığında nesnenin kendi alanından nasıl söz edileceğini gösterir. Burada net parametre adı n ile kalın. Zaten bilmiyorsanız bu sayfada this.size uydurmayın; dersin hedefi new'den yapıcı çağrısıdır. this sözcüğü sonraki konudur; bugün n'i size'a saklamak için bir zorunluluk değildir.
Hall.java derlenirken javac Box'ı bulamazsa, Box.java'nın aynı klasörde olduğunu ve sınıf satırının public class Box olduğunu kontrol edin. Ekran 0 gösteriyorsa yapıcıda atama eksik olabilir veya main hâlâ size'ı hiç ayarlamayan argümansız bir biçim kullanıyor olabilir — Box(int n) { size = n; } ve new Box(4) tutun. Ekrandaki sıfır genellikle alanın varsayılanında kaldığı anlamına gelir çünkü saklama hiç çalışmamıştır.
Klasör hâlâ alanlar sayfasından Cup.java veya Shelf.java tutuyorsa onlara dokunmayın ya da yalnızca derleme komutunu karıştırıyorlarsa silin. Hâlâ c.fill atayan eski bir Shelf'i derleyip bu sayfanın ekranını beklemeyin. Bu dersin Box ve Hall çiftini derledikten sonra java Hall çalıştırın.

this'ten önce

int size; bildirebilir, Box(int n) { size = n; } yazabilir ve Hall'den Box b = new Box(4); ile kurabilirsiniz. Her iki dosyayı derleyin ve java Hall çalıştırın. Ekran 4 gösterir. Yapıcı, new nesneyi kurduğunda çalışır. Sayıyı kurulum anında geçirdiniz, yapıcı alanda sakladı ve yazdırma saklamayı kanıtladı. Sonraki sayfa this'tir; orada metotlar ve yapıcılar içinde nesnenin kendi alanlarını adlandırmanın başka bir yolunu öğrenirsiniz.
Yapıcı başlığını void olmadan tutun. Argümanı new üzerinde tutun. Yazdırma b.size üzerinde kalsın. Bu üç alışkanlık, ilerlemadan önce bu sayfanın kontrol noktasıdır.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
5
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek