Ne zaman "bu" bir sınıfta kullanmalıyım?
this
geçerli bir nesne anlamına gelir. Ama ben gerçekten bunu kullanmak için gereken zaman bilmiyorum. Örneğin, eğer bazı yöntemler x
yerine this.x
kullanırsam herhangi bir fark olacak mı? Kabul yöntemi için yerel bir değişken için başvuracaktır x
olabilir? Sadece bu yöntemde görülen değişken yani.
Ne this.method()
? Bunu kullanabilir miyim? Bunu kullanmalıyım. Eğer sadece method()
, olacak şey değil, varsayılan olarak, geçerli nesne için başvurdun?
CEVAP
this
anahtar kelime öncelikle üç durumlarda kullanılır. İlk ve en yaygın belirleyici değişken başvuruları belirsizliği ortadan kaldırmak için yöntemler. İkinci bir nesne yöntemi bağımsız değişken olarak mevcut sınıf örneği geçirmek için bir ihtiyaç vardır. Üçüncü bir yapıcısı içindeki diğer kurucular çağırmak için bir yol olarak.
Durum 1 örnek:this
değişken başvuruları belirsizliği ortadan kaldırmak için kullanıyor. Java ayarlayıcı yöntemleri, yaygın olarak ayarlamaya çalışırken biz özel üye değişkeni olarak aynı ada sahip bir değişken geçmek. Biz o zaman this.x
değişken x
atayın.
public class Foo {
private String name;
// ...
public void setName(String name) {
// This makes it clear that you are assigning
// the value of the parameter "name" to the
// instance variable "name".
this.name = name;
}
// ...
}
Durum 3 örnek:this
diğer kurucular çağırmak için kullanıyor. Açıklamalarda, trinithis doğru this
başka bir kullanım alanı da dikkat çekti. Tek bir sınıf için birden fazla kurucular, this(arg0, arg1, ...)
seçtiğiniz başka bir kurucu, kurucu ilk satırda yapman karşılığında çağırmak için kullanabilirsiniz.
class Foo {
public Foo() {
this("Some default value for bar");
// Additional code here will be executed
// after the other constructor is done.
}
public Foo(String bar) {
// Do something with bar
}
// ...
}
Ayrıca this
örnek değişkeni başvuruluyor gerçeğini vurgulamak için kullanılan (anlam ayrımı ihtiyaç sans) gördüm, ama benim görüşüme göre nadir bir durumdur.
Ne zaman "strictfp" java ana...
Ne zaman bir WordPress kullanmak'...
C# ta string kullanmalıyım.Boş ya da D...
Ne zaman PHP sürekli kullanırım &; PHP...
Neden 1/1/1970 "zaman" Çağ;?...