this Anahtar Kelimesi
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 4 / 87.
this anahtar kelimesi, bir sınıfın mevcut örneğine atıfta bulunur. Aynı isme sahip alanlar ve parametreler arasında ayrım yapar.
this olmadan, parametre alanı gölgeler
public class Person {
private String name;
public Person(String name) {
name = name; // Parametreyi kendisine atar!
}
}Değerleri doğru bir şekilde atamak için this kullanımı
public class Person {
private String name;
public Person(String name) {
this.name = name; // Parametreyi alana atar
}
public String getName() {
return this.name;
}
}Metotlarda this kullanımı
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}this anahtar kelimesi her zaman geçerli nesneyi işaret eder. Parametre adları alan adlarıyla eşleştiğinde, karışıklığı ve hataları önlemek için bu gereklidir.
Görev
OrtaAlanlar ve parametreler arasındaki ayrımı yapmak için this anahtar kelimesini kullanarak Person sınıfını tamamlayın:
- Parametreleri alanlara atamak için
thiskullanan bir yapıcı (constructor) - Alanlara erişmek için
thiskullanan getter metotları "<name>, age <age>, from <city>"döndüren birgetDescription()metodu
Kopya kağıdı
this anahtar kelimesi, bir sınıfın mevcut örneğine atıfta bulunur ve aynı isme sahip alanlar (fields) ile parametreler arasında ayrım yapar.
this olmadan, parametre alanı gölgeler:
public Person(String name) {
name = name; // Parametreyi kendisine atar!
}Değerleri doğru şekilde atamak için this kullanımı:
public Person(String name) {
this.name = name; // Parametreyi alana atar
}Getter metotlarında this kullanımı:
public String getName() {
return this.name;
}Birden fazla alan ile this kullanımı:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}Kendin dene
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = Integer.parseInt(scanner.nextLine());
String city = scanner.nextLine();
Person person = new Person(name, age, city);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("City: " + person.getCity());
System.out.println(person.getDescription());
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici Kalıbı