জাভা ইনহেরিটেন্স বাংলায় - Inheritance in Java Bangla

Loading... জাভা ইনহেরিটেন্স বাংলায় - Inheritance in Java Bangla

Loading...

জাভা ইনহেরিটেন্স কি  ? (What is inheritance)

জাভাতে ইনহেরিটেন্স খুবই গুরুত্বপূর্ণ বিষয়। যখন কোনো ক্লাস আরেকটি ক্লাসের বৈশিষ্ট অর্জন করে তখন তাকে জাভা ইনহেরিটেন্স (JAVA Inheritance) বলে। ইনহেরিটেন্স প্রোগ্রামকে ছোট করে এবং প্রোগ্রাম একবার লেখেই বার বার ব্যবহার করা যায়। 
জাভা ইনহেরিটেন্স বুঝার আগে নিচের গুরুত্বপূর্ণ বিষয় ভালো করে লক্ষ্য করি : 

জাভাতে ইনহেরিটেন্স চার ভাগে ভাগ করা হয়েছে : (Types of inheritance in Java)

একক / সাধারণ ইনহেরিটেন্সে (Single/simple Inheritance - Single inheritance in Java):

যখন একটি মাত্র সুপার ক্লাস ও একটি মাত্র সাব ক্লাস থাকে এবং সুপার ক্লাসের সকল বৈশিষ্ট extends কিওয়ার্ড দ্বারা সাব ক্লাস অর্জন করে তখন তাকে, একক / সাধারণ ইনহেরিটেন্সে (Single/simple Inheritance) বলে। 

উপরের চিত্রে ধরি সুপার ক্লাসে ৪ টি আম ও সাব ক্লাসে ৩ টি আম রয়েছে  এবং যদি সাব ক্লাস তখন extends কিওয়ার্ড দ্বারা সুপার ক্লাসের সকল বৈশিষ্ট নিজের করে নেয়, তাহলে সাব ক্লাসের সর্বমোট ৭ টি আম থাকবে।
 

class student //Super class

{
    int roll, marks;
    String name;
          void input()
          {
              System.out.println("Enter Your Roll Marks and Name ");
          }
   // private int id=4546; //can't use in sub class

}


public class fahim extends student //Sub class
{
    void show()
    {
        roll=24;
        marks=75;
        name="Fahim ullah";
    System.out.println("Roll is = "+roll+" Marks= " +marks+" and Name= 

"+name);  
    }
    public static void main(String[] args) {
       fahim f=new fahim();
       f.input();
       f.show();
     //System.out.println(id); //can't use this in sub class
      
    }
    
}


মাল্টি-লেভেল ইনহেরিটেন্স (Multilevel inheritance in Java):

যখন একটি মাত্র সুপার ক্লাস ও একাধিক সাব ক্লাস থাকে এবং সুপার ক্লাসের সকল বৈশিষ্ট extends কিওয়ার্ড দ্বারা প্রথম সাব ক্লাস অর্জন করে ও দ্বিতীয় সাব ক্লাসটি প্রথম সাব ক্লাসের সকল বৈশিষ্ট extends কিওয়ার্ড দ্বারা অর্জন করে এরপর তৃতীয় সাব ক্লাসটি দ্বিতীয় সাব ক্লাসের সকল বৈশিষ্ট extends কিওয়ার্ড দ্বারা অর্জন করে এভাবে ধারাবাহিকতা ভাবে থাকলে তখন তাকে, মাল্টি-লেভেল ইনহেরিটেন্স (Multi-Level Inheritance) বলে।


class substrution 
{
    int x,y,z;
    void add()
    {
    x=20; y=30;
    z=x+y;
    System.out.println("Sum is "+z);
    }    
}
class multi extends substrution
{
    void mul()
    {
        x=4;y=5;
        z=x*y;
       System.out.println("Multiply is "+z);  
    }
}
class divistion extends multi
{
    void div()
    {
        x=10;y=2;
        z=x/y;
       System.out.println("Divistion is "+z);  
    }
}

public class result {
   
    public static void main(String[] args)
    {
        divistion res=new divistion();
        res.add();
        res.mul();
        res.div();
    }
    
}


 

একাধিক ইনহেরিটেন্স (Multiple Inheritance in Java):

যখন একাধিক সুপার ক্লাসের বৈশিষ্ট একটি সাব ক্লাস গ্রহণ করে তখন তাকে একাধিক ইনহেরিটেন্স (Multiple Inheritance) বলে। জাভাতে মাল্টিপল ইনহেরিটেন্স ক্লাস অনুযায়ী ব্যবহার করা যায় না। কারণ ধরুন একটি সুপার ক্লাসে sum নামে একটি মেথড রয়েছে এবং আরেকটি সুপার ক্লাসে একই নামে sum মেথড রয়েছে। এখন যদি সাব ক্লাস থেকে sum মেথডকে কল করা হয় তাহলে সে কোন সুপার ক্লাসের মেথডকে সে কল করবে? তখন প্রোগ্রামে এম্বিগুয়াস সৃষ্টি হয় তাই এই সমস্যা দূর করতে ক্লাস দিয়ে ইনহেরিটেন্স তৈরী না করে ইন্টারফেস ধারা ইনহেরিটেন্স তৈরী করা হয়। কারণ আমরা জানি ইন্টারফেসে শুধুমাত্র অ্যাবস্ট্রাক্ট মেথড থাকে এবং ইন্টারফেসের বাস্তবায়ন সাব ক্লাসে করা হয়।  


interface A
    {
    void out(); //absstract+public
    }
interface B
    {
    void out(); //absstract+public
    }

public class finish implements A,B{
    
    @Override
    public void out()
    {
        System.out.println("Multilabele inh...");
    }
    public static void main(String[] args)
    {
       finish f=new finish();
       f.out();
    }
}


 

অনুক্রমিক ইনহেরিটেন্স (Hierarchical inheritance in Java):

যখন একটি মাত্র সুপার ক্লাস থাকে ও একাধিক সাব ক্লাস থাকে এবং প্রত্যেকটি সাব ক্লাস সরাসরি extends কিওয়ার্ড দ্বারা সুপার ক্লাসের বৈশিষ্ট নিলে তখন তাকে অনুক্রমিক ইনহেরিটেন্স (Hierarchical Inheritance) বলে। 


class student{
    void name()
    {
        System.out.println("Enter your name ?");    
    }     
}

class fahim extends student
{
    void mynameis()
    {
        System.out.println("my name is fahim");    
    }     
}

class rahim extends student
{
    void mynameis()
    {
        System.out.println("my name is rahim");    
    }     
}

class finish {
     public static void main(String[] args)
    {
        fahim fa=new fahim();
        rahim ra=new rahim();
        
        fa.name();
        fa.mynameis();
        
        ra.name();
        ra.mynameis();
    }
}