Java'da this
Tin.java içinde size adlı bir int alanı ve this.size = size; yapan bir Tin(int size) yapıcısı olan Tin sınıfını yazın. Lab.java içinde Tin t = new Tin(7); ile bir tin kurun, sonra t.size yazdırın. Her iki dosyayı derleyin ve java Lab çalıştırın. Ekran bir satır göstermelidir: 7. Parametre ve alan size adını paylaşır. this sözcüğü nesnedeki alanı adlandırır, böylece saklama doğru yere ulaşır. Adlar çarpıştığında this kullanmak bu sayfanın öğrettiği şeydir.
Aynı adın neden this'e ihtiyacı var
Yapıcılar sayfasında parametre n, alan size idi; bu yüzden size = n; açıktı. Burada her iki ad da size. Yapıcının içinde yalın size parametreyi demektir. size = size; yazmak parametreyi kendisine kopyalar ve alanı varsayılanında bırakır. Nesnedeki alanın hâlâ yazılması gerekir. O yazma sol tarafta this.size kullanır.
Önce Tin.java oluşturun. Public class satırı public class Tin'dir. Burada eski bir Box veya Cup sınıf adı bırakmayın. Süslü parantezlerin içinde int size; bildirin. Sonra yapıcıyı yazın: Tin(int size) { this.size = size; }. Tin.java içinde main yoktur. Derlemeden önce kaydedin.
Atamayı bir kez daha okuyun. Sağdaki size, parametreye gelen değerdir — burada 7. Soldaki this.size, kurulmakta olan nesnedeki alandır. Satır çalıştıktan sonra o nesnenin size'ı 7 tutar. this.'i kaldırıp size = size; bırakırsanız, ekran sonra 0 gösterir çünkü alan değişmemiştir.
public class Tin {
int size;
Tin(int size) {
this.size = size;
}
}
Lab bir tin kurar
Aynı klasörde Lab.java oluşturun. Public class satırı public class Lab'dır. main içinde Tin t = new Tin(7); yazın, sonra System.out.println(t.size);. Argüman 7, yapıcı parametresi size olur. Yapıcı bunu this.size = size; ile saklar. Bu sayfada ayrı bir t.size = 7; satırına ihtiyacınız yoktur.
Lab'i main'i tutan sınıf olarak bırakın. Bu ders için main'i Tin içine koymayın. Yapıcılar sayfasından kalan bir Hall dosyası hâlâ klasördeyse, bu ders için java Hall çalıştırmayın — Tin.java ve Lab.java'yı derledikten sonra java Lab çalıştırın.
public class Lab {
public static void main(String[] args) {
Tin t = new Tin(7);
System.out.println(t.size);
}
}
Her iki dosyayı tutan klasörden javac Tin.java Lab.java çalıştırın. İkisi de tamam olduğunda önce Tin.java'yı, sonra Lab.java'yı derleyebilirsiniz. Parantezler, süslü parantezler ve noktalı virgüller uyuşunca javac kendi satırını yazmaz. Sonra java Lab çalıştırın — java Lab.java değil, java Tin de 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: 7. 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; Lab'de new Tin(7) ile yazdırmayı, Tin'de this.size = size; tutun.
Çalıştırmayı bir kez adım adım izleyin. Java Lab.main'den başlar. new Tin(7) ifadesi bir Tin kurar ve Tin(int size)'ı parametre eşit 7 ile çağırır. Gövde this.size = size yazar, böylece nesnenin alanı 7 olur. Sonra main t.size yazdırır ve ekran 7 gösterir.
this.size = size; yerine size = size; yazarsanız, int alan 0'da kalır. O zaman ekran 7 değil 0 gösterir. Bu genellikle this'in eksik olduğu anlamına gelir. Atamanın sol tarafına this.'i geri koyun.
this.size ve size yan yana
Kısa bir tablo, yapıcının içindeyken iki adı net tutar.
📊 this.size vs size
| Ad | Tin(int size) içinde ne demektir |
|---|---|
yalnız size |
yapıcıya giren parametre |
this.size |
kurulmakta olan nesnedeki alan |
this.size = size; |
parametreyi alana sakla |
size = size; |
alanı güncellemez |
Tablo yalnızca bir hatırlatmadır. Tutacağınız satır yapıcıdaki this.size = size;, sonra Lab'deki Tin t = new Tin(7); ve System.out.println(t.size);'dır. |
Yapıcılar sayfasıyla karşılaştırma
Yapıcılar sayfasında Box(int n) { size = n; } çalışıyordu çünkü n ve size farklı sözcüklerdi. O biçim hâlâ çalışır. Bu sayfa bilerek aynı sözcüğü iki kez kullanır, böylece this'e ihtiyacınız olur. size = n; içeren kalmış bir Box ve Hall demosu başka bir derstir. Bu sayfa için Tin, Lab ve this.size = size; tutun.
System.out.println(t); ile yalnız t'yi yazdırmak temiz bir 7 göstermez. Saklanan sayıyı görmek için t.size yazdırın. Nesne referansı tek başına alan değeri değildir.
Başka günlerde hâlâ farklı bir parametre adı seçebilirsiniz. Bu ders bilerek eşleşen adları seçer. Bu sayfada aynı Tin demosunda n ile this'i karıştırmayın. Tek net yol yeter: eşleşen adlar, alanda this, alanı yazdırma.
İki tin hâlâ ayrı kalır
Her new Tin(...) yapıcıyı ayrı bir nesne için yeniden çalıştırır. Tin a = new Tin(2); ve Tin b = new Tin(9); yazıp her iki size alanını yazdırabilirsiniz. Her çağrı kendi nesnesinde this.size = size; kullanır. İki nesne tek bir size yuvasını paylaşmaz. Bu kontrol için ikinci bir kod kutusu gerekmez — 7'yi gördükten sonra Lab'deki sayıları bir kez değiştirin ya da tek-tin demosunu kaydettiğiniz dosya olarak tutun.
Her iki satır 0 gösteriyorsa yapıcıda solda hâlâ this yoktur. Lab.java derlenirken javac Tin'i bulamazsa, Tin.java'nın aynı klasörde olduğunu ve sınıf satırının public class Tin olduğunu kontrol edin.
Örnek metotlar için ne kalır
Bu sayfa this'i yalnızca yapıcı içinde alanı saklamak için kullanır. Sonraki bir sayfa — örnek metotlar — nesne üzerinde çalışan ve alanları okuyabilen veya değiştirebilen metotları gösterir. Burada yapıcıdaki saklamayla kalın. Zaten bilmiyorsanız bu ders için Tin'e ekstra metot uydurmayın; dersin hedefi adlar eşleşirken this.size = size'dır.
Lab'de hâlâ yapıcı demosundan Box b = new Box(4); varsa ve bu klasörde tutmak istediğiniz bir Box sınıfı yoksa o satırı kaldırın. Tin t = new Tin(7); ve System.out.println(t.size); tutun. Tin öğretirken derleyici sizin için bir Box uydurmaz.
Klasör hâlâ Box.java veya Hall.java tutuyorsa dokunmayın ya da yalnızca derleme komutunu karıştırıyorlarsa silin. Bu dersin Tin ve Lab çiftini derledikten sonra java Lab çalıştırın.
Örnek metotlardan önce
int size; bildirebilir, Tin(int size) { this.size = size; } yazabilir ve Lab'den Tin t = new Tin(7); ile kurabilirsiniz. Her iki dosyayı derleyin ve java Lab çalıştırın. Ekran 7 gösterir. Parametre aynı adı kullanırken this sözcüğü nesnenin alanını adlandırır. Sayıyı kurulum anında geçirdiniz, yapıcı this ile sakladı ve yazdırma saklamayı kanıtladı. Sonraki sayfa örnek metotlardır; nesne zaten varken nesne üzerindeki metotlar alanları kullanır.
Yapıcı başlığını void olmadan tutun. Alanda this. tutun. Yazdırma t.size üzerinde kalsın. Bu üç alışkanlık, ilerlemadan önce bu sayfanın kontrol noktasıdır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 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