Javada Final əsasən dəyişənlərə,metodlara,siniflərə tətbiq edilir.Əvvəlcə finalın metoda necə tətbiq edilməsinə baxaq.Bir final metod təməl sinifdə tətbiq olunduqda,törədilən siniflərdə ləğv edilə bilməyən metodları ifadə edir.
class Temel
{
final void Yaz( )
{
System.out.println("Temel sinifdeki Yaz metodu");
}
}
class Toreyen extends Temel
public void Yaz(
)
{
System.out.println(" Toreyen sinifdəki
Yaz metodu ");
}
}
public class FinalTest1
{
public static void
main( )
{
Toreyen t=new
Toreyen( );
t.Yaz();
}
}
Bu nümunəni
işlətsək səhv göstərəcək.Çünki təməl siniflərdə final olan metod törəyən
siniflərdə override edilmir.
İndi isə final olaraq təyin olunan
dəyişənlərə baxaq.Dəyişənləri final olaraq bildirdiyimizdə,onlara ilk qiymət verildikdən
sonra qiymətlərini dəyişdirə bilmərik.Bu əslində Javaya qədər öyrəndiyimiz
proqramlaşdırma dillərindən bizə tanış olan const anlayışı ilə eynidir.Bununla yanaşı final
dəyişənlərə qiymət verilməsi həmin sətirdə və ya metod içərisində olmalıdır.Belə ki,obyekt yaradılması bitdikdən sonra final dəyişənin qiyməti
məlum olur və bir daha dəyişilmir.Aşağıdakı nümunəyə baxaq.
public class FinalTest2 {
private final int
finalDeyişen;
public void
printFinal( ) {
System.out.println("Final Deyisen Deyeri: " + finalDeyisen);
}
}
Beləki,bunu
işlətsək səhv göstərəcək.Yuxarıda qeyd etdiyimiz kimi ilk qiymət verilməsi
sətrdə və ya metod içərisində olmalıdır.Buna görə də bu nümunəni
aşağıdakı kimi yazaq.
public class FinalTest2 {
private final int
finalDeyişen;
public void
printFinal( ) {
finalDeyişen = 5;
System.out.println("Final Deyisen Deyeri: " + finalDeyisen);
}
}
Bu halda da səhv
göstərəcək.Çünki burada qiymət verilməsi sinifin içərisində hər
hansı bir metodun içərisindədir. İndi isə yazdığımız kodda aşağıdakı kimi dəyişiklik aparaq.
public class FinalTest2 {
private final int
finalDeyişen;
finalDegisken = deger;
}
public void
printFinal( ) {
}
Kodu bu cür yazdığımızda səhvsiz işləyəcək.Çünki,final dəyişənin qiyməti quruluşcu metod içərisində verilmişdi.
İndi isə az da olsa bir iki cümlə ilə final siniflər haqqında qeydlər aparaq.Beləki,final olaraq təyin olunmuş bir sinifdən başqa bir sinifi irsi olaraq törətmək olmaz.Aşağıdakı nümunəyə baxaq.final class FinalSinif
{
}
class Toreyen extends FinalSinif
{
}
Düzdü,bu yazılışı kod adlandırmaq olmaz.Amma başa düşülən olması üçün mən belə yazılışdan istifadə etməyi məqsədə uyğun hesab edirəm.Əvvəldən qeyd etdiyim kimi final olaraq təyin olunmuş bir sinifdən başqa bir sinifi törətmək olmaz.Yəni belə bir kod yazılışını genişlədib bir proqram şəkilinə gətirsək,səhvlə qarşılaşacağıq.
Bu da sonuna bəlkə də gəlib çıxa bilmədiyim mövzulardan birinin sonu.