যেমনটি উল্লেখ করা হয়েছে, final
জাভা পদ্ধতির সাহায্যে এই পদ্ধতিটি ব্যবহার করা হয় যে পদ্ধতিটি ওভাররাইড করা যাবে না (বস্তুর স্কোপের জন্য) বা লুকানো (স্থির জন্য)। এটি আসল বিকাশকারীকে কার্যকারিতা তৈরি করতে দেয় যা উপশ্রেণী দ্বারা পরিবর্তন করা যায় না এবং এটি যা দেয় তার সমস্ত গ্যারান্টি is
এর অর্থ এই যে যদি পদ্ধতিটি অন্যান্য স্বনির্ধারিত উপাদানের মতো অ-সর্বজনীন ক্ষেত্র / পদ্ধতিগুলির উপর নির্ভর করে তবে চূড়ান্ত পদ্ধতির কার্যকারিতা এখনও স্বনির্ধারিত হতে পারে। এটি বেশিরভাগ ক্ষেত্রে যেমন (বহুবিজ্ঞানের সাথে) এটি আংশিক কাস্টমাইজেশনের অনুমতি দেয় for
কিছুকে অনুকূলিতকরণযোগ্য হতে বাধা দেওয়ার বিভিন্ন কারণ রয়েছে, যার মধ্যে রয়েছে:
পারফরম্যান্স - কিছু সংকলক অপারেশন বিশ্লেষণ ও অনুকূলিত করতে পারে, বিশেষত পার্শ্ব প্রতিক্রিয়া ছাড়াই।
এনক্যাপসুলেটেড ডেটা পান - অপরিবর্তনীয় অবজেক্টগুলিতে দেখুন যেখানে নির্মাণের সময় তাদের বৈশিষ্ট্যগুলি সেট করা আছে এবং কখনই পরিবর্তন করা উচিত নয়। অথবা এই গুণাবলী থেকে প্রাপ্ত একটি গণনা করা মান। একটি ভাল উদাহরণ জাভা String
ক্লাস।
নির্ভরযোগ্যতা এবং চুক্তি - অবজেক্টস প্রিমিটিভের (দ্বারা গঠিত int
, char
, double
, ইত্যাদি) এবং / অথবা অন্যান্য বস্তু। Components উপাদানগুলির জন্য প্রযোজ্য সমস্ত ক্রিয়াকলাপগুলি প্রযোজ্য বা এমনকি যৌক্তিক হওয়া উচিত নয় যখন সেগুলি বড় অবজেক্টে ব্যবহৃত হয়। final
পরিবর্তক সহ পদ্ধতিগুলি তা নিশ্চিত করতে ব্যবহার করা যেতে পারে। কাউন্টার ক্লাস একটি ভাল উদাহরণ।
public class Counter {
private int counter = 0;
public final int count() {
return counter++;
}
public final int reset() {
return (counter = 0);
}
}
তাহলে public final int count()
পদ্ধতি নয় final
, আমরা ভালো কিছু করতে পারেন:
Counter c = new Counter() {
public int count() {
super.count();
return super.count();
}
}
c.count(); // now count 2
বা এর মতো কিছু:
Counter c = new Counter() {
public int count() {
int lastCount = 0;
for (int i = super.count(); --i >= 0; ) {
lastCount = super.count();
}
return lastCount;
}
}
c.count(); // Now double count