Yükleniyor...

Java'da nesneler

Chip.java içinde ok yazdıran beep metoduna sahip Chip adlı bir sınıf yazın. Bu sayfada metot static değildir. İkinci dosyada, Bench.java, Chip c = new Chip(); ile bir chip kurun, sonra c.beep(); çağırın. Her iki dosyayı derleyin ve java Bench çalıştırın. Ekran bir satır göstermelidir: ok. new sözcüğü sınıftan bir nesne kurar. Değişken c o nesneyi tutar. beep'i çıplak sınıf adında değil, c üzerinde çağırırsınız. Bu kurulan nesne — ve onu kullanan çağrı — bu sayfanın öğrettiği şeydir.

Sınıftan bir nesne

Sınıf hâlâ adlı tiptir. Nesne o tipten kurulan bir değerdir. new Chip() satırı Java'dan o değeri kurmasını ister. Tipi Chip olan bir değişkende saklar, sonra her nesneye ait metotlara o değişkenle ulaşırsınız.
Önce Chip.java oluşturun. Public class satırı public class Chip'tir. Bu dosyada eski bir Badge veya Desk sınıf adı bırakmayın. Süslü parantezlerin içinde void beep() yazın — bu başlıkta static sözcüğü olmasın. Gövde bir yazdırmadır: System.out.println("ok");. void kalsın. Metot sayı döndürmez. Bu sayfada Chip.java içinde main yoktur. Derlemeden önce dosyayı kaydedin.

Chip with beep

java
public class Chip {
    void beep() {
        System.out.println("ok");
    }
}

Bench chip'i kurar, sonra beep çağırır

Aynı klasörde Bench.java oluşturun. Public class satırı public class Bench'tir. main içinde iki satır yazın: önce Chip c = new Chip();, sonra c.beep();. İlki tipi Chip olan c değişkenini bildirir ve yeni bir nesneyle doldurur. İkincisi o nesnede beep çağırır. Nokta yalnız sınıf adından sonra değil, değişken adından sonra gelir.

Bench builds one chip

java
public class Bench {
    public static void main(String[] args) {
        Chip c = new Chip();
        c.beep();
    }
}

Her iki dosyanın bulunduğu klasörden javac Chip.java Bench.java çalıştırın. Dosyalar tamamsa önce Chip.java, sonra Bench.java da derleyebilirsiniz. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Bench çalıştırın — java Bench.java değil, java Chip de değil. Çalıştırma komutundan .java sonunu çıkarın. main tutan sınıfı başlatın. Aynı komutlar Windows ve macOS'ta çalışır.
Program bir satır yazdırıp durmalıdır: ok. Sizden yazmanızı istememelidir. Terminal klavye bekliyorsa, eski bir alıştırmadan kalan nextLine çağrısı hâlâ bir dosyadadır. Onu silin ve Bench'te Chip c = new Chip(); ile c.beep(); tutun, Chip'te beep ile.
Çalışmayı bir kez izleyin. Java Bench.main'den başlar. new Chip() ifadesi bir nesne kurar. O nesne c'de saklanır. c.beep() çağrısı o nesne için beep'e girer. Metot ok yazdırır ve döner. Sonra Bench biter. Ekran satırı, new nesneyi oluşturduktan sonra nesnenin metodundan geldi.
Sınıfı diskteki plan, nesneyi bu çalıştırma için bellekte kurulan bir parça gibi düşünün. Planı bir kez derlersiniz. Her new Chip() başka bir parça kurar. Değişken parçayı adlandırır ki sonraki satırlar ona ulaşsın. O ad olmadan bu sayfada beep için tutacak kalmaz.

Çağrı neden yalnız Chip değil c kullanır

Sınıflar sayfasında static bir metot tip adıyla Badge.show() diye çağrılabilirdi. Burada beep'te static sözcüğü yoktur. Java önce bir nesne bekler. Nesnesiz Chip.beep(); bu başlangıç şekline uymaz. new ile kurun, sonucu bir değişkende tutun, sonra o değişken üzerinden çağırın.
Yalnız new Chip(); yazıp hiç saklamazsanız yine bir nesne kurmuş olursunuz ama beep çağıracak adınız kalmaz. Bu sayfada değişkeni tutun: Chip c = new Chip(); sonra c.beep();. Değişken, new bittikten sonra nesneye giden yoldur.
Artakalan bir static demo klasörü karıştırabilir. Hâlâ Badge.show(); çağıran bir dosya önceki dersin şeklidir. Bu sayfa için Chip ve Bench ile new satırını tutun. Burada Badge'e gerek yoktur.

İki nesne, iki beep

Aynı sınıftan birden fazla nesne kurabilirsiniz. Her new Chip() ayrı bir nesne yapar. Her nesne kendi başına beep çalıştırabilir. Sınıf metni ortaktır; nesneler aynı değer değildir.

Bench builds two chips

java
public class Bench {
    public static void main(String[] args) {
        Chip a = new Chip();
        Chip b = new Chip();
        a.beep();
        b.beep();
    }
}

Yeniden derleyip çalıştırın: javac Chip.java Bench.java, sonra java Bench. Ekran iki satır göstermelidir: ok, sonra ok. İlk satır a'dan geldi. İkinci b'den. İkisi de Chip içindeki aynı beep metot metnini kullandı ama her çağrı new ile kurulan farklı bir nesnede çalıştı.
Ekran yalnız bir ok gösterirse her iki çağrının da var olup olmadığını ve her iki değişkenin de new ile kurulup kurulmadığını kontrol edin. Chip b = a; yazmak ikinci nesne kurmaz; b'yi a ile aynı nesneye bağlar. Bu fikir sonraki sayfalara kalır. Bu sayfada iki nesne istediğinizde iki new Chip() ifadesi kullanın.

Bu sayfanın fields için bıraktığı

Bu sayfa henüz chip içinde bir sayı veya sözcük saklamaz. Alanlar — her nesnede veri tutan adlar — sonraki sayfadır. Burada nesne new'den sonra vardır ve örnek metot beep yalnızca yazdırır. Bu, sınıfın tip ve bir nesnenin kurulan değer olarak ayrımını görmeye yeter.
Değişkeni c'den unit diye yeniden adlandırabilirsiniz: Chip unit = new Chip(); sonra unit.beep();. Metot gövdesi hâlâ o sözcüğü yazdırıyorsa ekran ok kalır. Değişken adı sizindir; tip adı Chip ile new Chip() ifadesi hâlâ uyuşmalıdır.
javac Bench.java derlerken Chip sembolünü bulamadığını söylerse Chip.java'nın aynı klasörde olduğunu ve sınıf satırının gerçekten public class Chip dediğini kontrol edin. Çalıştırma hiçbir şey yazdırmazsa main'in new satırından sonra hâlâ c.beep(); çağırdığını ve beep'in hâlâ println içerdiğini doğrulayın.

fields'ten önce

void beep() ile Chip yazabilir, Chip c = new Chip(); ile bir nesne kurabilir ve Bench'ten c.beep(); çağırabilirsiniz. Her iki dosyayı derleyin ve java Bench çalıştırın. Ekran ok gösterir. İkinci bir new Chip() kendi başına beep edebilen başka bir nesne kurar. Sonraki sayfa fields'tir; orada her nesne kendi saklanan verisini tutmaya başlar.

🧠 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