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

C++ vs Java: static কীওয়ার্ডের পার্থক্য

C++ এবং Java-তে static কীওয়ার্ড আছে, কিন্তু কিছু মৌলিক পার্থক্য রয়েছে।

স্ট্যাটিক ডেটা মেম্বার (সাদৃশ্য)

দুভাষাতেই স্ট্যাটিক মেম্বার ক্লাসের প্রোপার্টি, সব অবজেক্টের बीच শেয়ার্ড।

Java

public class Test {
    static int ob_count = 0;
    Test() { ob_count++; }
    public static void main(String[] args) {
        new Test(); new Test();
        System.out.println("Objects: " + ob_count); // 2
    }
}

C++

#include <iostream>
using namespace std;

class Test {
public:
    static int ob_count;
    Test() { ob_count++; }
};
int Test::ob_count = 0; // ডেফিনিশন বাইরে দরকার

int main() {
    Test o1, o2;
    cout << "Objects: " << Test::ob_count; // 2
    return 0;
}

স্ট্যাটিক মেম্বার ফাংশন (সাদৃশ্য)

দুভাষায়ই: শুধু স্ট্যাটিক মেম্বার অ্যাক্সেস করতে পারে, this নেই।

পার্থক্য

বিষয়C++Java
স্ট্যাটিক ব্লকনেইহেয় (static { ... }) - ক্লাস লোডিং-এ একবার রান হয়
স্ট্যাটিক লোকাল ভেরিয়েবলসাপোর্ট করে (ফাংশন-লেভেল)সাপোর্ট করে না
স্ট্যাটিক মেম্বার ডেফিনিশনক্লাসের বাইরে আলাদা ডেফিনিশন লাগেক্লাসের ভেতরেই ইনিশিয়ালাইজেশন সম্ভব

Java Static Block উদাহরণ

public class MyClass {
    static int x = 10;
    static { x += 5; } // স্ট্যাটিক ব্লক
    static void print() { System.out.println(x); }
}
public class Test {
    public static void main(String[] args) { MyClass.print(); } // 15
}

সারসংক্ষেপ: C++-এ স্ট্যাটিক লোকাল ভেরিয়েবল ও মেম্বার ডেফিনিশন বাইরে দিতে হয়। জাভায় স্ট্যাটিক ব্লক আছে, কিন্তু স্ট্যাটিক লোকাল নেই।

  1. C#-এ Volatile কীওয়ার্ড (Volatile Keyword) কী

  2. C#-এ static কিওয়ার্ড

  3. জাভাতে this কিওয়ার্ড দিয়ে স্ট্যাটিক মেম্বার রেফার করা যায় কিনা

  4. জাভা ৮-এ ইন্টারফেসে স্ট্যাটিক মেথড