Wednesday, January 2, 2019

অব্জেক্ট অরিয়েন্টেড প্রোগ্রামিং - ১২ঃ অ্যানোনিমাস ইনার ক্লাস

অ্যানোনিমাস ইনার ক্লাস হলো এক ধরনের ক্লাস যার কোন নাম নাই। এই কথা শুনে অনেকে হয়তো টাস্কি খেয়ে গেছো; নামবিহীন আবার ক্লাস হয় নাকি! একটু পরেই ব্যপারটা আরো ক্লিয়ার হবে। নীচের প্রোগ্রামটা খেয়াল করো। আমি একটা PersonalData নামের একটা ইন্টারফেস তৈরী করলাম এবং সেটাকে ইমপ্লিমেন্ট করার জন্য MyClass নামের আরেকটা ক্লাস তৈরী করলাম এবং কাজটি সম্পর্ন করলাম।

Program - 1: 

 public interface PersonalData {  
      int x = 20;   
      public void getAge();   
 }  

 public class MyClass implements PersonalData {  
      @Override  
      public void getAge() {  
           System.out.println("The age is: "+ x);  
      }  
 }  

 public class MainClass {  
      public static void main(String[] args) {  
           MyClass myClass = new MyClass();  
           myClass.getAge();  
      }  
 }  

 OUTPUT  
 20  

মেইন মেথড থেকে কল করে আমি সিমপ্লি getAge() মেথডটি ব্যবহার করতে পারবো, যার আউটপুট হবে ২০। পুরো কাজটা অক্ষত রেখে কোনভাবে যদি MyClass ক্লাসটিকে হাওয়া করে দিতে পারি তখনই Anonymous Inner ক্লাসের ব্যপারটা চলে আসে। আমরা কাজটা করেই ফেলি!

Program - 2:

 public interface PersonalData {  
      int x = 20;   
      public void getAge();   
 }  

 public class MainClass {  
      public static void main(String[] args) {  
           /* Creating the object of the interface implementing the   
            overloading method */  
           PersonalData personalData = new PersonalData() {  
                @Override  
                public void getAge() {  
                     System.out.println("The age is: "+ x);  
                }  
           };  
           personalData.getAge();  
      }  
 }  

 OUTPUT  
 20  

কোন পার্থক্য খুঁজে পেয়েছো? এখানে কিন্তু MyClass নামের ক্লাসটি নাই। কিন্তু আমাদের আউটপুট ঠিকই আছে। এখানে আমরা ইন্টারফেসটি ইমপ্লিমেন্ট করার জন্য আলাদা ক্লাস ইউজ না করে সরাসরি ইন্টারফেসটির অব্জেক্ট তৈরী করেছি এবং তার আনইমপ্লিমেন্টেড মেথডগুলো ইমপ্লিমেন্ট করে দিয়েছি একইসাথে। এর ফলে আমরা মাঝখানের ক্লাসটিকে এভয়েড করে ফেলছি। এখানে MyClass ই Anynomous ক্লাস হিসেবে কাজ করছে আর যেহেতু এটি MainClass নামক অন্য একটি ক্লাসের ভিতর কাজ করছে তাই একে Anynomous Inner ক্লাস বলা হয়। তাহলে আমরা অ্যানোনিমাস ইনার ক্লাসের একটা সংজ্ঞায় উপনীত হতে পারি-

অ্যানোনিমাস ইনার ক্লাস হল এমন এক ধরনের ক্লাস যেটা কোন ইন্টারফেস বা অ্যাবস্ট্র্যাক্ট ক্লাসের সাবক্লাস তৈরী করা ছাড়াই অব্জেক্ট তৈরী করতে সহায়তা করে।


2 comments:

  1. #include
    int main()
    {
    int ar[3]={1,2,4};
    int i;

    for(i=0;i<3;i++)
    {
    printf("%d\n",*ar);ar++;
    }
    }


    array er nam jodi pointer er moto kaj kore tahole pointer er moto array er name increment kore porer element gula print kora jassena keno ..kindly explain this

    ReplyDelete
    Replies
    1. #include
      int main()
      {
      int ar[3]={1,2,4};
      int i;

      for(i=0;i<3;i++)
      {
      printf("%d\n",*ar);ar++;
      }
      }

      Delete