আমি এখানে একটি আপডেট এবং গভীর উত্তর লিখতে ভেবেছিলাম।
final
কীওয়ার্ডটি বেশ কয়েকটি জায়গায় ব্যবহার করা যেতে পারে।
- ক্লাস
এর final class
অর্থ অন্য কোনও শ্রেণি চূড়ান্ত শ্রেণিকে বাড়িয়ে দিতে পারে না । জাভা রান টাইম ( জেআরই ) যখন জানে যে কোনও অবজেক্ট রেফারেন্স একটি চূড়ান্ত শ্রেণীর (এফ বলুন) টাইপের ধরণে থাকে , তবে এটি জানে যে সেই রেফারেন্সের মান কেবল এফ-র প্রকারের হতে পারে knows
উদা:
F myF;
myF = new F(); //ok
myF = someOther; //someOther cannot be in type of a child class of F.
//because F cannot be extended.
সুতরাং যখন এটি object অবজেক্টের যে কোনও পদ্ধতি কার্যকর করে, তখন ভার্চুয়াল টেবিল ব্যবহার করে সেই পদ্ধতিটি রান সময় সমাধান করার দরকার হয় না । অর্থাত্ রান-টাইম পলিমারফিজম প্রয়োগ করা যায় না। রান রান সময় তাই নিয়ে মাথা ঘামায় না। যার অর্থ এটি প্রক্রিয়াজাতকরণের সময় সাশ্রয় করে যা কর্মক্ষমতা উন্নত করবে।
- পদ্ধতি
একজন final method
কোন শ্রেণীর মানে যে কোনো শিশু শ্রেণী যে বর্গ ব্যাপ্ত এর ওভাররাইড করতে পারবে না যে চূড়ান্ত পদ্ধতি (গুলি)। সুতরাং এই দৃশ্যে রানটাইম আচরণটি ক্লাসের জন্য উল্লিখিত পূর্ববর্তী আচরণের সাথেও বেশ একই রকম।
- ক্ষেত্র, স্থানীয় ভেরিয়েবল, পদ্ধতি পরামিতি
যদি উপরের কোনও প্রকার যেমন নির্দিষ্ট করা থাকে final
, তার অর্থ হল ইতিমধ্যে মানটি চূড়ান্ত হয়ে গেছে, সুতরাং মানটি পরিবর্তন করা যায় না ।
উদা:
ক্ষেত্রগুলির জন্য, স্থানীয় পরামিতি
final FinalClass fc = someFC; //need to assign straight away. otherwise compile error.
final FinalClass fc; //compile error, need assignment (initialization inside a constructor Ok, constructor can be called only once)
final FinalClass fc = new FinalClass(); //ok
fc = someOtherFC; //compile error
fc.someMethod(); //no problem
someOtherFC.someMethod(); //no problem
পদ্ধতির পরামিতিগুলির জন্য
void someMethod(final String s){
s = someOtherString; //compile error
}
এর সহজ অর্থ হ'ল final
রেফারেন্স মানটির মান পরিবর্তন করা যায় না। অর্থাত্ একটি মাত্র আরম্ভের অনুমতি রয়েছে। এই দৃশ্যে , রান টাইমে, যেহেতু জেআরই জানে যে মানগুলি পরিবর্তন করা যায় না, এটি এই সমস্ত চূড়ান্ত মানগুলিকে (চূড়ান্ত রেফারেন্সগুলির) এল 1 ক্যাশে লোড করে । কারণ এটিকে মূল স্মৃতি থেকে বার বার লোড করার দরকার নেই । অন্যথায় এটি এল 2 ক্যাশে লোড হয় এবং প্রধান মেমরি থেকে সময় সময় লোড করে। সুতরাং এটি একটি কর্মক্ষমতা উন্নতি।
সুতরাং উপরের 3 টি পরিস্থিতিতে, যখন আমরা যে final
জায়গাগুলি আমরা ব্যবহার করতে পারি সেগুলিতে কীওয়ার্ড নির্দিষ্ট করে নেই, তখন আমাদের চিন্তা করার দরকার নেই, সংকলক অপ্টিমাইজেশন আমাদের জন্য এটি করবে। আরও অনেকগুলি জিনিস রয়েছে যা সংকলক অনুকূলিত্ব আমাদের জন্য করে। :)