متغیر فاینال بعد از این که مقدار اولیه گرفت دیگ تغییر نمیکنه
متد فاینال قابل override کردن نیست
کلاس فاینال قابل ارث بری نیست
توی کاتلین به صورت پیشفرض متد ها و کلاس ها فاینال هستن و برای اینکه override کنید یا ازشون ارث بری کنید از کلمه کلیدی open باید استفاده کنید
کمی بیشتر توضیحی راجع به static بدم
وقتی فیلدی در یک کلاس static تعریف میشه در واقع به این معنی هست که این فیلد جز خصایص یک کلاس هست نه اشیا ها !
و این فیلد استاتیک بین همه نمونه های کلاس مشترک هست !
📌مثالی که بخوام بزنم اینه :
فرض ما یک کلاس داریم به نام Person
خب هرشخصی یک سری ویژگی ها داره که بین هرشخص متفاوته ! مثلا رنگ چشم ها یا سن و...
اما در این میان ی سری خصایص هست بین همه ی اشخاص یکسان هست ! مثل چی ؟ حداکثر سن ! حداکثر سن هرفردا نهایت میتونه 200 باشه .
پس ما میایم فیلد MAX_AGE رو نوعشو استاتیک میگیریم و مقدار دهیش میکنیم با 200 .
با این کار همه اشیا نیاز ندارن این فیلد رو پر کنن !
اما فیلد رنگ چشم و سن چون برا هرفرد متفاوته اون رو استاتیک نمیکنیم .
*نکته :
دقت کنید وقتی متغییری static تعریف میشه، به محض لود شدن کلاس ، اون متغیر هم لود میشه تو کلاس !
اما فیلدهای غیراستاتیک تا زمانی که شی ای ساخته نشه در حافظه لود نمیشن .