SON SINIF SORUNUNU ADRES ETMEK İÇİN:
Bir sınıfı final yapmak için iki yol vardır. Birincisi, sınıf bildiriminde final anahtar sözcüğünü kullanmaktır:
public final class SomeClass {
// . . . Class contents
}
Bir sınıfı final yapmanın ikinci yolu, tüm kurucularını özel olarak ilan etmektir:
public class SomeClass {
public final static SOME_INSTANCE = new SomeClass(5);
private SomeClass(final int value) {
}
Son olarak işaretlemek, bu Test sınıfına bir bakış göstermenin gerçek bir final olduğunu öğrenirseniz size sorun çıkarır. ilk bakışta herkese açık görünüyor.
public class Test{
private Test(Class beanClass, Class stopClass, int flags)
throws Exception{
// . . . snip . . .
}
}
Ne yazık ki, sınıfın tek kurucusu özel olduğundan, bu sınıfı genişletmek imkansızdır. Test sınıfı söz konusu olduğunda, sınıfın final olması için bir neden yoktur. Test sınıfı, örtük son sınıfların nasıl sorunlara neden olabileceğine iyi bir örnektir.
Bu yüzden, bir sınıfı yapıcı özel yaparak örtülü olarak final yaptığınızda bunu son olarak işaretlemelisiniz.