`Son` yöntemi Java: ne vaat ediyor?
Bir Java sınıfının bir yöntemi bu yöntem geçersiz olmayabilir işaretlemek için final
, tanımlanabilir:
public class Thingy {
public Thingy() { ... }
public int operationA() {...}
/** this method does @return That and is final. */
public final int getThat() { ...}
}
Bu çok açık ve hiç kaza sonucu ağır basan, ya da belki performans-karşı korumak için bazı kullanım olabilir; ama benim sorum bu değil.
Benim sorum: bakış OOP bir noktadan o final
sınıf tasarımcısı bir yöntem tanımlayarak anladımvaat ediyorbu yöntem hep anlatılan ya da dolaylı olarak çalışacaktır. Ama çoğu zaman bu yöntem ne yaptığını daha karmaşık bir teslim ise sınıf yazar etkisi dışında olabilirözellik.
Sözdizimsel kısıtlama benim için açıktır, ama OOP anlamda anlamı nedir? final
doğru çoğu sınıf yazarlar tarafından bu anlamda kullanılır?
"Sözleşme yok final
bir yöntem" söz mü? tür
CEVAP
Nedenini zaten çoğu zaman bunu sen istedin (hepsi değilse) cevap tam olarak bu değildi. Ama ben seni anlamaya getirebilirsem deneyelim.
Sizin de belirttiÄŸiniz gibi, final
yöntem geçersiz (nesne kapsam için) veya gizli olabilir mi işaretlemek için bir Java yöntemi (statik için) kullanılır. Bu orijinal geliştirici başkaları tarafından değiştirilmeyecek emin olabiliyor, ve sunduğu tüm garanti işlevselliği oluşturmak için izin verir.
Bu yöntem halka açık olmayan alanları/yöntemleri işlevselliği gibi diğer özelleştirilebilir bileşenleri dayanır son yöntem hala özelleştirilebilir olabilir anlamına gelir. Bu gibi (polimorfizmi) kısmi özelleştirme için izin olsa iyi olur.
Neden özelleştirilebilir olmaktan önlemek için bir şey ister misin, diye sorabilirsiniz. Nedenleri vardır.
Kapsüllenmiş veri erişim -- izin niteliklerini inşaat anda ayarlanmış olan sabit bir nesne arar ve asla değiştirilmemelidir. Ya da hesaplanan değer bu nitelikleri türetilmiştir. İyi bir örnek Java String sınıfı.
Güvenilirlik ve Sözleşme -- nesneleri veya daha az karmaşık ilkel veri diğer nesneler tarafından bestelenmiş. İşlemleri bu bileşenler için geçerli değil, daha büyük nesne olarak kullanıldıĞında uygulanabilir hatta mantıklı olmalıdır. Son yöntemleri sağlamak için kullanılabilir. Sayaç sınıfı iyi bir örnektir.
public class Counter {
private int counter = 0;
public final int count() {
return counter ;
}
public final int reset() {
return (counter = 0);
}
}
Eğersayım yöntemi, son değil, bu tarz bir şey yapabiliriz:
Counter c = new Counter() {
public int count() {
super.count();
return super.count();
}
}
c.count(); // now count 2
Ya da şöyle bir şey:
Counter c = new Counter() {
public int count() {
int lastCount = 0;
for (int i = super.count(); --i >= 0; ) {
lastCount = super.count();
}
return lastCount;
}
}
c.count(); // Now double count
- Performans -- Bazı uygulamaları ameliyat, yan etkisi olmayan, özellikle analiz iyileştirebilir.
Başımın üstünden.
Bu biraz yardımcı olur umarım.
Nasıl bir dize olarak yöntem adı veril...
Dönüş türü ile Java yöntemi return ifa...
bir WordPress kullanmak deferreds ve v...
Java Yöntemi İçerir.lang.String büyük ...
Java - kolayca POST yöntemi ile HTTP p...