کلمه کلیدی Final در جاوا
سلام دوستان در این سری از آموزش برنامه نویسی جاوا به آموزش کلمه کلیدی Final در جاوا می پردازیم شاید تا به حال با کلمه کلیدی Final در برخی از آموزش ها برخورد کرده باشید در ادامه علت استفاده از کلمه final را به شما یاد خواهیم داد از کلمه کلیدی final به در سه بخش قابل استفاده است که در ادامه آنها را عرض می کنیم در ادامه با ما همراه باشید.
زمانی که بخواهیم یک Constant یا ثابت تعریف کنیم می توانیم از کلمه کلیدی final قبل از متغیر استفاده کنیم و دیگر محتویات مربوط به آن متغیر دیگر تغییر نخواهد کرد.
به طور کلی سه نوع final می توان تعریف کرد که عبارتند از :
- final variable (متغیر از نوع Final)
- final method (متد از نوع Final)
- final class (کلاس از نوع Final)
در ادامه مثالی برای هرکدام قرار خواهیم داد.
final variable (متغیر از نوع Final)
متغیر از نوع final بعد از initialize (مقدار دهی) شدند دیگر غیر قابل تغییر خواهند بود.
کد زیر را در نظر بگیرید.
1 2 3 4 5 6 7 8 9 10 | class Demo{ final int MAX_VALUE=99; void myMethod(){ MAX_VALUE=101; } public static void main(String args[]){ Demo obj=new Demo(); obj.myMethod(); } } |
در صورت اجرای کد بالا خطای زیر اتفاق می افتد.
1 2 3 4 | Exception in thread "main" java.lang.Error: Unresolved compilation problem: The final field Demo.MAX_VALUE cannot be assigned at beginnersbook.com.Demo.myMethod(Details.java:6) at beginnersbook.com.Demo.main(Details.java:10) |
علت خطا هم به خاطر تغییر متغیر MAX_VALUE است.
final method (متد از نوع Final)
متد های Final هم غیر قابل overridden شدن هستند یعنی نمی توان زمانی که extend شدن یک متد با همان نام دوباره تعریف شود.
کد زیر را در نظر بگیرید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class XYZ{ final void demo(){ System.out.println("XYZ Class Method"); } } class ABC extends XYZ{ void demo(){ System.out.println("ABC Class Method"); } public static void main(String args[]){ ABC obj= new ABC(); obj.demo(); } } |
در صورت اجرا خطا رخ خواهد داد چون نمی توان یک متد را overridden کرد.
final class (کلاس از نوع Final)
کلاس های Final غیر قابل Extend هستند.
کد زیر را در نظر بگیرید.
1 2 3 4 5 6 7 8 9 10 11 | final class XYZ{ } class ABC extends XYZ{ void demo(){ System.out.println("My Method"); } public static void main(String args[]){ ABC obj= new ABC(); obj.demo(); } } |
در صورت اجرای کد بالا خطای زیر رخ خواهد داد.
1 | The type ABC cannot subclass the final class XYZ |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.