Ne zaman "son" kullanmalıyım?

5 Cevap php

Ben gün-gün programlamada bir sınıf veya bir yöntem finalini ilan (web veya başka türlü) gereken herhangi özel bir nedeni var mı? Kullanılması gerektiği bir gerçek dünyadan bir örnek verin.

I pick an 'obscure' keyword and master it çalışıyorum çünkü MEZUNLARI, ben soruyorum.

5 Cevap

O bunları yapmak için size istemediğiniz sınıfları ile şeyler yapmaktan başka programcılar engeller. Peki yerine "XXX yapmak için bu sınıfı kullanmak yok" diyerek bir yorum yapmak yerine, onlar bunu geçersiz kılmak ve bu şekilde bunu istismar için cazip olmayacak şekilde tasarlayabilirsiniz.

Edit: bir örnek talep olduğundan, ben bu anahtar kelime kullanışlı bulabileceğiniz bir olgu anlatacağım ... Eğer iki nesne diyelim ki, birbirleri ile iletişim nasıl tanımlayan bir sınıf, bir dinleyici var demek ve notifier. Dinleyici sınıfı açıkça mirası izin gerekir, ama bunu bir "olan-bir" ilişki içinde kullanılması gerekir, böylece bildirim sınıfı son yapmak isteyebilirsiniz. Bu şekilde, sizin dinleyici bazı varsayımlar onlar aldığınız mesajların doğası hakkında nesneleri yapabilirsiniz.

Aksi takdirde, bu çılgın şeyler her türlü böylece mesajları ve uzatmak gibi, bu sınıftan miras mümkün yapardı. Bunu yapmak için diğer programcılar istemiyorsanız, o zaman sınıf finalini yapabilir. Aynı zamanda diğer programcılar kolayca sınıflar alt sınıf ok hangi anlamak sağlar gibi Ayrıca, bu, yaygın olarak kullanılan kamu API çok daha mantıklı olabilir.

Başka bir örnek - bir tampon bazlı akış işlemci var demek, ve okuma () / yazma () metodu içinde, obje (yani, mevcut bayt ya da herneyse) mevcut durumu hakkında bazı verileri korumak. Orada bu sınıf sınıflara herkes işleme sırasında super yöntemlerini çağırır olacağını garanti yolu yoktur - ve muhtemelen böyle bir sınıf sadece bir kaç yöntemler içerdiğinden, sadece yerine her yöntemin her şey nihai yapmak daha iyidir. Bu da yine "vardır-a" değil, "is-a" sınıfını kullanarak insanları zorlar, ve bu nedenle, kod idam edilecek beklemek ne kadar kontrol edebilirsiniz.

Ben seninle aynı fikirde olacağını tüm class son verme muhtemelen bir kez mavi ay içinde yapmanız gereken istediğiniz bir şey, ama bunu egzersiz seçmelisiniz PHP bu yeteneğe sahip olduğu güzel.

"Enforce Composition over Inheritance" yerine kısaca koyar. Sen başka bir şey sonraki bölümde açıkladığı gibi, hem de güvenlik yararları olabilir, hangi ile müdahale sizin sınıfın belli bir davranışı garanti.

Bazı insanlar özellikle izin vermek niyetinde sürece son all sınıflar bildirmek gerektiğini iddia, ve bunun polimorfik uzantısı etkilerini inceledik. Ben bu kod ile çalışan başka kim güvensizlik bir sürü ima hissediyorum eğilimindedir, ama ne yazık ki, bazen bu garanti ediyor.

Bu yöntemler için virt masada bakmak gerekmez beri pek çok dilde, nihai olarak bir sınıf ilan ayrıca, optimizasyon faydalar sağlar.

Eğer sınıfın niyet zorlamak isteyen ve niyet bu alt sınıfa mantıklı değil böyle ise, o zaman nihai kullanın; Aksi takdirde, hiçbir önemli bir avantaj var.

Genel olarak, sadece niyet uygulamak için bir mekanizma bulunuyor.

Bir son sınıf bir sınıflandırma olamaz sınıf, böylece oluşturulur türevleri olmasını istemiyorum şey değildir. Java Mutlak değer ne anlama geldiğini yeniden tanımlamak mümkün istemiyor beri Java Örneğin, Matematik sınıfı son.