سلام به همگی امیدوارم حالتون خوب باشه. تو این پست قرار تفاوت بین متغیر های const و final را متوجه بشیم و نحوه برخورد کامپایلر با اون ها را بررسی کنیم.
متغیر const : یک بار مقدار دهی میشود و مقدار آن همیشه ثابت خواهد بود.
متغیر final : در طول اجرا برنامه مقدار دهی میشود و همانند const میباشد.
خب تا اینجا فهمیدیم که هر دو ثابت هستند و مقدار دهی بشوند نمیتوان تغییر کنند.
The final variable 'name' can only be set once.Try making 'name' non-final
خطایی که اینجا داده این هست که این متغیر یک بار مقدار دهی شده و نمیتونه دیگه تغییر کنه و پیشنهاد داده که از نوع final نباشه. خب برای متغیر const هم همچین ارور هم میده و حالا تفاوت اینا چی هست؟
ببینید متغیر const زمانی که کامپایل داره توسط کامپایلر تجزیه و تحلیل میشه مقدار دهی میشه که به این فرایند compile-time گفته میشه. خب ولی متغیر final زمانی مقدار دهی میشه که برنامه اجرا میشه که اصلاحا زمان run-time انجام میشه.
خب متغیر const کجا به درد میخوره؟ زمانی که متغیر هایی داریم که مقدار آنها به هیچ وجه تغییر نمیکنه مثلا عدد پی، یا واحد ها و در پروژه های بزرگ رنگ های مدنظر خودمون رو داخل متغیر const تعریف میکنیم.
متغیر final تجربه ای که خودم داشتم در ویژگی های یک کلاس تعریف میکنم و آنجا کاربرد دارد.
در خط 6 مشاهده میکنید که یک متغیر برای title اپ بار مشخص کردم که با فراخوانی کلاس HomePage باید به متد سازنده آن یک مقدار String بدهم.
یک نکته ی دیگه این است که یک متغیر final میتواند داده const به عنوان ورودی دریافت کند اما یک متغیر const هیچ وقت نمیتواند یک متغیر final را به عنوان ورودی دریافت کند، چون هنگام کامپایل شدن برنامه متغیر final هنوز مقدار دهی نشده و متغیر const باید مقدار دهی بشه و با ارور مواجه میشود.
امیدوارم که این پست به درد شما دوستان خورده باشد. خوشحال میشم که پست من رو لایک کنید.