না, কনস্ট্রাক্টররা সর্বজনীন, ব্যক্তিগত, সুরক্ষিত বা ডিফল্ট হতে পারে (কোনও অ্যাক্সেস মডিফায়ার নেই)। ব্যক্তিগত কিছু করার অর্থ এই নয় যে কেউ এটি অ্যাক্সেস করতে পারবে না। এর মানে হল ক্লাসের বাইরের কেউ এটি অ্যাক্সেস করতে পারবে না। তাই প্রাইভেট কনস্ট্রাক্টরও দরকারী৷
জাভাতে কনস্ট্রাক্টররা কি ব্যক্তিগত হতে পারে?
জাভাতে একটি প্রাইভেট কনস্ট্রাক্টর ব্যবহার করা হয় অবজেক্ট তৈরিতে সীমাবদ্ধতার জন্য। এটি স্ট্যাটিক সদস্য-শুধু ক্লাসে ব্যবহৃত একটি বিশেষ উদাহরণ কনস্ট্রাক্টর। যদি একটি কনস্ট্রাক্টরকে ব্যক্তিগত হিসাবে ঘোষণা করা হয়, তাহলে এর অবজেক্টগুলি শুধুমাত্র ঘোষিত ক্লাস থেকে অ্যাক্সেসযোগ্য। আপনি কনস্ট্রাক্টর ক্লাসের বাইরে থেকে এর অবজেক্ট অ্যাক্সেস করতে পারবেন না।
ডিফল্ট কনস্ট্রাক্টর কি ব্যক্তিগত নাকি সর্বজনীন?
C++ এ, ক্লাসের অবজেক্ট তৈরি হলে কনস্ট্রাক্টরকে স্বয়ংক্রিয়ভাবে কল করা হয়। ডিফল্টরূপে, কন্সট্রাক্টরদের শ্রেণীরপাবলিক বিভাগে সংজ্ঞায়িত করা হয়।
আমরা সাধারণত জাভাতে কনস্ট্রাক্টরকে পাবলিক মেম্বার হিসেবে ঘোষণা করি?
পাবলিক কনস্ট্রাক্টর মানে এটি ক্লাসের বাইরে অ্যাক্সেসযোগ্য হতে পারে অন্য ক্লাসও সহজ পদ্ধতিতে সেগুলি পেতে পারে তবে আমরা যদি কনস্ট্রাক্টরকে ব্যক্তিগত হিসাবে করি তবে এটি অ্যাক্সেসযোগ্য নয় ক্লাসের বাইরে। এছাড়াও আমরা কন্সট্রাক্টরকে কনস্ট্রাক্টরকে সর্বজনীন হিসাবে তৈরি করি যাতে প্রোগ্রামের যেকোনো জায়গায় ক্লাস শুরু হয়।
আমি কীভাবে আমার কনস্ট্রাক্টরকে সর্বজনীন করব?
আপনি যদি প্যাকেজের বাইরে আপনার ক্লায়েন্ট কোডকে আপনার অবজেক্ট ইনস্ট্যান্টিয়েট করার অনুমতি দেন তাহলে কনস্ট্রাক্টরকে সর্বজনীন করুন। যদি আপনি না করেনএটি চাই (কারণ বস্তুটি প্যাকেজ নির্দিষ্ট বা বস্তুটি নিজেই সরাসরি ইনস্ট্যান্ট করা যায় না) package-private.