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

জাভাতে স্ট্যাটিক মেথড এবং স্ট্যাটিক ব্লকের রেস্ট্রিকশন (Restrictions)

স্ট্যাটিক মেথড এবং স্ট্যাটিক ব্লক

স্ট্যাটিক মেথড: ক্লাসের অন্তর্গত থাকে, ক্লাস লোড হলে মেমোরিতে লোড হয়। অবজেক্ট ছাড়া ক্লাস নাম দিয়ে কল করা যায়।

স্ট্যাটিক ব্লক: static { } দিয়ে ডিক্লেয়ার করা কোড ব্লক। ক্লাস লোডিং সময় মেইন মেথডের আগে এক্সিকিউট হয়। সাধারণত স্ট্যাটিক ভেরিয়েবল ইনিশিয়ালাইজেশনের জন্য ব্যবহৃত হয়।

উদাহরণ

public class Sample {
    static int num = 50;
    static {
        System.out.println("Hello this is a static block");
    }
    public static void demo() {
        System.out.println("Contents of the static method");
    }
    public static void main(String args[]) {
        Sample.demo();
    }
}

আউটপুট

Hello this is a static block
Contents of the static method

স্ট্যাটিক মেথডের রেস্ট্রিকশন (Restrictions)

  • নন-স্ট্যাটিক মেম্বার অ্যাক্সেস করা যায় না: ইনস্ট্যান্স ভেরিয়েবল বা ইনস্ট্যান্স মেথড ডায়রেক্টলি অ্যাক্সেস করতে পারবেন না (অবজেক্ট রেফারেন্স দরকার)।
  • this এবং super ব্যবহার করা যায় না: স্ট্যাটিক কনটেক্সটে কোনো কারেন্ট অবজেক্ট (this) বা পেরেন্ট রেফারেন্স (super) থাকে না।
  • শুধু স্ট্যাটিক ডেটা অ্যাক্সেস করতে পারেন: অন্য স্ট্যাটিক ভেরিয়েবল বা স্ট্যাটিক মেথড কল করতে পারেন।
  • ওভাররাইড করা যায় না (হাইডিং হয়): সাবক্লাসে একই সিগনেচারের স্ট্যাটিক মেথড লিখলে সেটি ওভাররাইড হয় না, মেথড হাইডিং (Method Hiding) হয়।

স্ট্যাটিক ব্লকের রেস্ট্রিকশন

  • রিটার্ন স্টেটমেন্ট ব্যবহার করা যায় না: ভয়েড (void) কনটেক্সটে থাকে।
  • এক্সপ্লিসিটলি ইনভোক করা যায় না: JVM স্বয়ংক্রিয়ভাবে ক্লাস লোডিং সময় কল করে।
  • এক্সেপশন থ্রো করা যায় না (চেকড): যদি এক্সেপশন হয়, তবে try-catch ব্লকে হ্যান্ডল করতে হবে, throws ব্যবহার করা যায় না।
  • this এবং super কীওয়ার্ড ব্যবহার করা যায় না।
  • এক্সিকিউশন অর্ডার কন্ট্রোল করা যায় না: ডিক্লেয়ারেশন অর্ডার অনুযায়ী এক্সিকিউট হয়।

সারসংক্ষেপ: স্ট্যাটিক কনটেক্সট (মেথড/ব্লক) ইনস্ট্যান্স-স্পেসিফিক কিছু এক্সেস বা কন্ট্রোল করতে পারে না। এটি ক্লাস-লেভেলের অপারেশন জন্য ডিজাইন করা।

  1. জাভাতে String intern() মেথডের ভূমিকা

  2. জাভাতে paint() মেথড এবং repaint() মেথড-এর মধ্যে পার্থক্য কী?

  3. জাভাতে setBounds() মেথডের ব্যবহার কী?

  4. জাভাতে printStackTrace() এবং getMessage() মেথডের মধ্যে পার্থক্য