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

জাভাতে নেস্টেড ক্লাসের কতগুলো ধরন সংজ্ঞায়িত আছে?


জাভাতে, একটি ক্লাসের ভিতরে অন্য একটি ক্লাস ডিফাইন করা সম্ভব, এমন ক্লাসগুলোক নেস্টেড ক্লাস বলা হয়। আমরা ইনার ক্লাস-এর জন্য private, public, protected বা ডিফল্ট অ্যাক্সেস মডিফায়ার এবং আউটার ক্লাস-এর জন্য ডিফল্ট বা public অ্যাক্সেস মডিফায়ার ব্যবহার করতে পারি।

জাভাতে দুটি ধরনের নেস্টেড ক্লাস সংজ্ঞায়িত আছে।

  • স্ট্যাটিক নেস্টেড ক্লাস (Static Nested Class)
  • নন-স্ট্যাটিক নেস্টেড ক্লাস (Non-Static Nested Class)

স্ট্যাটিক নেস্টেড ক্লাস

  • আমরা একটি ইনার ক্লাসকে static হিসেবে ডিফাইন করতে পারি, এমন ধরনের ক্লাসকে স্ট্যাটিক নেস্টেড ক্লাস বলা হয়।
  • নেস্টেড ক্লাস static কীওয়ার্ড দিয়ে ডিফাইন করা থাকলে, এই ধরনের নেস্টেড ক্লাসের আউটার ক্লাসের ইনস্ট্যান্সের সাথে কোনো রিলেশনশিপ থাকে না।
  • একটি স্ট্যাটিক নেস্টেড ক্লাস আমাদের ক্লাসের স্ট্যাটিক সদস্যদের অ্যাক্সেস করতে পারে।

উদাহরণ

class Car { 
    static class Wheel { 
        public void rotate() { 
            System.out.println("The wheel is rotating"); 
        } 
    } 
} 
public class Test { 
    public static void main(String args[]) { 
        Car.Wheel wheel = new Car.Wheel(); 
        wheel.rotate(); 
    } 
}

আউটপুট

The wheel is rotating

নন-স্ট্যাটিক নেস্টেড ক্লাস

  • একটি নন-স্ট্যাটিক নেস্টেড ক্লাসকে পরোক্ষভাবে ইনার ক্লাস বলা হয় জাভাতে।
  • ইনার ক্লাস আউটার ক্লাসের অবজেক্টের সাথে যুক্ত। তাই ইনার ক্লাস আউটার ক্লাসের অন্যান্য ভেরিয়েবল এবং মেথডের মতোই বিবেচিত হয়।
  • ইনার ক্লাস আউটার ক্লাসের অবজেক্ট বা ইনস্ট্যান্সের সাথে যুক্ত থাকায়, আমরা ইনার ক্লাসের ভিতরে স্ট্যাটিক ভেরিয়েবল ডিক্লেয়ার করতে পারি না।

উদাহরণ

public class OuterClassTest { 
    private int a = 10; 
    public void innerClassInstance() { 
        InnerClassTest inner = new InnerClassTest(); 
        inner.outerObject(); 
    } 
    public static void main(String args[]) { 
        OuterClassTest outer = new OuterClassTest(); 
        outer.innerClassInstance(); 
    } 
    class InnerClassTest { 
        public void outerObject() { 
            System.out.println("Outer Value of a is: " + a); 
        } 
    } 
}

আউটপুট

Outer Value of a is: 10
  1. জাভা ৯-এ JShell-এ /edit কমান্ডের çeşitাবলী

  2. জাভাতে অ্যানোনিমাস ইনার ক্লাস কত প্রকার থাকতে পারে?

  3. জাভাতে ক্লাসের বিভিন্ন প্রকার কী কী?

  4. জাভা প্রোগ্রাম এক্সিকিউশনে জড়িত বিভিন্ন ধাপ