যদিও প্রায়শই উদ্ধৃত কারণ হ'ল "ইন্টারফেসগুলি পাবলিক এপিআইগুলি সংজ্ঞায়িত করে", আমি মনে করি এটি একটি অতি-সরলকরণ। (এবং এটি বিজ্ঞপ্তিযুক্ত যুক্তির "গন্ধ"))
অ্যাক্সেস মডিফায়ারগুলির মিশ্রণ রয়েছে এমন ইন্টারফেসগুলি থাকা অর্থহীন হবে না; যেমন আংশিকভাবে প্রকাশ্য এবং আংশিকভাবে ইন্টারফেসের মতো একই প্যাকেজের অন্যান্য শ্রেণিতে সীমাবদ্ধ। আসলে, কিছু ক্ষেত্রে এটি ডান-ডান দরকারী, আইএমও হতে পারে।
প্রকৃতপক্ষে, আমি মনে করি যে কোনও ইন্টারফেসের সদস্যকে স্পষ্টতই জনসাধারণ করার পিছনে যুক্তির অংশটি জাভা ভাষাকে আরও সহজ করে তুলেছে :
স্পষ্টতই পাবলিক ইন্টারফেসের সদস্যরা প্রোগ্রামারদের সাথে ডিল করার জন্য সহজ। আপনি কোড (ক্লাস) কতবার দেখেছেন যেখানে পদ্ধতি অ্যাক্সেস মডিফায়ারগুলি এলোমেলোভাবে আপাতদৃষ্টিতে বেছে নেওয়া হয়েছিল? "সাধারণ" প্রোগ্রামারদের অনেক কীভাবে সেরা জাভা বিমূর্ততা গণ্ডি পরিচালনা করতে অসুবিধা বোঝার আছে 1 । ইন্টারফেসে সর্বজনীন / সুরক্ষিত / প্যাকেজ-ব্যক্তিগতকে যুক্ত করা তাদের পক্ষে আরও শক্ত করে তোলে।
স্পষ্টতই পাবলিক ইন্টারফেসের সদস্যরা ভাষার স্পেসিফিকেশনকে সহজতর করে ... এবং তাই জাভা সংকলক লেখকদের, এবং প্রতিচ্ছবি API গুলি বাস্তবায়নকারী লোকদের জন্য কাজ।
"ইন্টারফেসগুলি পাবলিক এপিআইগুলি সংজ্ঞায়িত করে" এমন ভাবনার রেখাটি তাত্ক্ষণিকভাবে ভাষা নকশা সিদ্ধান্তের সরলকরণের একটি পরিণতি (বা বৈশিষ্ট্যযুক্ত) ... অন্যভাবে নয়। তবে বাস্তবে, জাভা ডিজাইনারদের মনে সমান্তরালে সম্ভবত দুটি विचारের বিকাশ ঘটেছে।
যে কোনও হারে, JDK-8179193 এর আরএফই - এর সরকারী প্রতিক্রিয়া এটিকে পরিষ্কার করে দেয় যে জাভা ডিজাইনের দলটি 2 টি সিদ্ধান্ত নিয়েছিল যা protectedইন্টারফেসের মাধ্যমে অনুমতি দেওয়া সামান্য সত্যিকারের সুবিধার জন্য জটিলতা যুক্ত করে। সাক্ষ্য প্রমাণের জন্য কুডোস @ এসকোমিসায় ।
আরএফইতে থাকা প্রমাণগুলি বিষয়টি নিষ্পত্তি করে। এটি যুক্ত করা হয়নি বলেই সরকারী কারণ।
1 - অবশ্যই, শীর্ষ-বন্দুক প্রোগ্রামারগুলির এই জিনিসগুলির সাথে কোনও অসুবিধা নেই এবং অ্যাক্সেস নিয়ন্ত্রণ বৈশিষ্ট্যগুলির আরও সমৃদ্ধ প্যালেটটিকে স্বাগত জানানো যেতে পারে। কিন্তু, যখন তাদের কোড বজায় রাখার জন্য অন্য কাউকে হস্তান্তর করা হয় তখন কী হয়?
2 - আপনি তাদের সিদ্ধান্ত বা তাদের বর্ণিত যুক্তির সাথে একমত হতে পারেন তবে তা মূল কথা।