কম্পিউটার টিউটোরিয়াল

জাভাতে protected এবং default অ্যাক্সেস স্পেসিফায়ারের পার্থক্য কী?


Protected অ্যাক্সেস স্পেসিফায়ার একই প্যাকেজের ভিতরে দৃশ্যমান এবং সাবক্লাসেও দৃশ্যমান, যেখানে Default হলো একটি প্যাকেজ লেভেল অ্যাক্সেস স্পেসিফায়ার যা শুধু একই প্যাকেজের ভিতরে দৃশ্যমান।

Protected Access Specifier

  • Protected একই প্যাকেজের ভিতরে পাবলিকের মত কাজ করে এবং প্যাকেজের বাইরে প্রাইভেটের মত।
  • Protected প্যাকেজের বাইরেও পাবলিকের মত কাজ করে কিন্তু শুধু সাবক্লাস অবজেক্টের সাপেক্ষে।
  • Protected ফিল্ড বা মেথড ক্লাস এবং ইন্টারফেসের জন্য ব্যবহার করা যায় না।
  • সুপারক্লাসে protected ডিক্লেয়ার করা ফিল্ড, মেথড এবং কন্সট্রাক্টর শুধু অন্যান্য প্যাকেজের সাবক্লাসগুলো দ্বারা অ্যাক্সেস করা যায়।
  • একই প্যাকেজের ক্লাসগুলিও protected ফিল্ড, মেথড এবং কন্সট্রাক্টর অ্যাক্সেস করতে পারে, এমনকি যদি সেগুলো protected মেম্বারের ক্লাসের সাবক্লাস না হয়।

উদাহরণ

public class ProtectedTest {
    // protected ভেরিয়েবল
    protected int age = 30;
    protected String name = "Adithya";
    /**
     * এই মেথডটি protected হিসেবে ডিক্লেয়ার করা হয়েছে।
     */
    protected String getInfo() {
        return name + " is " + age + " years old.";
    }
    public static void main(String[] args) {
        System.out.println(new ProtectedTest().getInfo());
    }
}

আউটপুট

Adithya is 30 years old.

Default Access Specifier

  • কোনো ক্লাসের মেম্বার যদি কোনো অ্যাক্সেস স্পেসিফায়ার ছাড়াই লিখা হয়, তবে সেটি Default মाना হয়।
  • Default একই প্যাকেজের ভিতরে পাবলিকের মত কাজ করে এবং প্যাকেজের বাইরে প্রাইভেটের মত।
  • কোনো ক্লাসের Default মেম্বারগুলো একই প্যাকেজের যেকোনো জিনিসের কাছে উপলব্ধ কিন্তু প্যাকেজের বাইরে কোনো শর্তে উপলব্ধ নয়।
  • Default অ্যাক্সেস শুধু প্যাকেজ লেভেলে সীমাবদ্ধ করে, ক্লাস এক্সটেন্ড করলেও ডিফল্ট ডেটা মেম্বার অ্যাক্সেস করা যায় না।

উদাহরণ

public class DefaultTest {
    // অ্যাক্সেস মডিফায়ার ছাড়া ভেরিয়েবল
    int age = 25;
    String name = "Jai";
    /**
     * এই মেথডটি ডিফল্ট অ্যাক্সেস স্পেসিফায়ারের সাথে ডিক্লেয়ার করা হয়েছে
     */
    String getInfo() {
        return name + " is " + age + " years old.";
    }
    public static void main(String[] args) {
        System.out.println(new DefaultTest().getInfo());
    }
}

আউটপুট

Jai is 25 years old.
  1. জাভাতে JRadioButton এবং JCheckBox-এর পার্থক্য কী?

  2. জাভাতে JTextField এবং JTextArea-এর পার্থক্য কী?

  3. জাভাতে JFrame এবং JDialog-এর পার্থক্য কী?

  4. জাভাতে GridLayout এবং GridBagLayout-এর পার্থক্য কী?