বাংলায় শিখুন জাভা! জাভা ব্যাসিক টিউটোরিয়াল পর্ব-০৬

অনেক দিন পর আবারও লেখতে শুরু করলাম । আপনারা ভাবছেন সেই কবে লাস্ট টিউটোরিয়াল দিয়ায়েছি তার পর কোন খোজই নাই । যাই হোক আজকে আমরা জাভার আরেকটি নতুন টপিক শিখব ।
আজকে আমাদের টপিক হলো inheritance ।
Inheritance কী ?
Inheritance শব্দের অর্থ হলো উত্তরাধিকার , অর্থাৎ উত্তরাধিকারসূত্রে কোনো বৈশিষ্ট পাওয়া । জাভাতে এই ধারণাকে কাজে লাগিয়ে আমরা বলতে পারি একটি class এর সব বৈশিষ্ট আরেকটি class এ পাওয়া ।
Inheritance প্রক্রিয়ায় পুরাতন এক বা একাদিক class হতে নতুন কোন class তৈরী করা হয়ে থাকে । এক্ষেত্রে পুরাতন ক্লাসকে বলা হই বেস ক্লাস বা super class এবং নিউ ক্লাসকে বলা হয় derived/sub class বা inherited class । এ প্রক্রিয়ায় কোন বেস ক্লাস হতে ডিরাইভড ক্লাস গঠনের জন্য class keyword এর পরে
ডিরাইভড ক্লাসের নাম দিতে হবে এবং তার টিক পরে extends keyword use করতে হবে । এই extends keyword এর মাধ্যমে আমরা সুপার ক্লাস এর সব বৈশিষ্ট পাব ।


নিচে একটি কাঠামো দেওয়া হলো :
Class SuperClass
{
//rest of code
}
Class SubClass extends SuperClass
{
// rest of code
}
নিচে একটি প্রোগ্রাম দেওয়া হলো :

/** M. Raihan
* Khulna University
*
*/

public class SuperClass {

public void SuperClassMethod(){

System.out.println(“This is super class”);

}

}
public class Main extends SuperClass{

public static void main(String[] args) {

SuperClass sp= new SuperClass();
sp.SuperClassMethod();

}

}

এইবার আরেকটি প্রোগ্রাম আমরা দেখি , এই প্রোগ্রামে আমরা Circle আর Triangle এর ২টি ক্ষেত্রফল বের করব |
প্রোগ্রামটি হলো :

/** M. Raihan
* Khulna University
*
*/

import java.util.Scanner; // This is the pakage for taking input from the keyboard

public class SuperClass {
Scanner sc = new Scanner(System.in); // Here we take input from Keyboard

public double CircleArea(){

double pi=3.1416,num1=0,r=0,CircleAreaResult=0;

num1=sc.nextDouble(); // num1 input taken
r=sc.nextDouble(); // r input taken

CircleAreaResult = pi*num1*(r*r);

return CircleAreaResult;
}
public double TriangleArea(){
double base,hight,TriangleAreaResult = 0;

base=sc.nextDouble(); // Here base input taken keyboard
hight=sc.nextDouble(); // hight input taken from keyborad

TriangleAreaResult = 0.5*base*hight;
return TriangleAreaResult;
}

public void Result() {
double Result1,Result2;

Result1= CircleArea();
Result2= TriangleArea();

System.out.println(“Circle Area : “+Result1+”\nTriangle Area : “+Result2);

}

}
/** M. Raihan
* Khulna University
*
*/

public class Main extends SuperClass{

public static void main(String[] args) {

SuperClass sp= new SuperClass();
sp.Result();

}

}

এই কোডে আমরা scanner নামের নতুন একটি ক্লাস use করেছি । এই ক্লাস এর main কাজ হল keyboard থেকে ইনপুট নেওয়া । সেই কাজটিই আমরা করেছি । circle এর পাই আর ব্যাসার্ধ আর মান আমরা কীবোর্ড থেকে নিয়েছি ।একই ভাবে rectangle এর ভূমি আর উচ্চতা আমরা কীবোর্ড থেকে নিব ।
এখানে আমরা circle এর জন্য একটি মেথড এবং triangle আর জন্য আরেকটি মেথড রেখেছি এবং ২টি মেথডের result আমরা আরেকটি মেথডে রেখেছি । পরে main ক্লাস এ আমরা superclass কে extend করে result মেথডটি এক্সেস করেসি ।

এখন inheritance এর ৩ টি main টপিক শিখব :
১) Method Overloading
২) Method Overriding
৩) Constructor

Method Overloading:
যখন ২ বা ততোধিক মেথড একটি class এ থাকে এবং মেথড গুলির নাম যদি একই হই কিন্তু তাদের argument ভিন্ন তখন সেটিকে Method Overloading বলে | আমরা যখন System.out.printf লেখি তখন অনেক গুলি prinf এর সাজেশন আসে । যদি আসে না then লেখে crtl +space চাপ দিলেই আমরা অনেক গুলো prinf দেখতে পাব । এটিই হলো method overloading.
Method Overriding:
যখন একটি ক্লাস এর মেথড নাম এবং argument সুপার ক্লাস এর মেথড এর সাথে match করবে অর্থাৎ সুপার ক্লাস এর কোনো মেথড যদি অন্য ক্লাস এ একই নামে থাকে তখন সেটি কে method overriding বলে । অন্যভাবে বলা যাই ডিরাইভড ক্লাসের অবজেক্ট দ্বারা সাব ক্লাস্সের ইনহেরিটেড মেথড ব্যাতিরেক ডিরাইভড ক্লাসের নিজস্ব মেথড use করার প্রক্রিয়াকে মেথড ওভাররাইডিং বলা হই ।

Constructor:
কনস্ট্রাকটর এমন এক বিশেষ মেথড যেটি অবজেক্ট ক্রিয়েশন এর সময় আদি মান নির্ধারণ এবং মেমরি পরিসর বরাদ্দের জন্য use হই । কনস্ট্রাকটর মেথডের নাম তার ক্লাসের নামের অনুরূপ হয় এবং কনস্ট্রাকটর মেথড ক্লাসের পাবলিক অংশে বর্ণনা করতে হয় ।
কনস্ট্রাকটর মেথডের ফরমেট :

class constructorName {
public constructorName(){
//constructor body here
}

}
আজকে inheritance এর পর্ব এখানে ইতি টানছি নেক্সট টিউটোরিয়ালে আমরা ওভারলোডিং ,ওভাররিডিং কনস্ট্রাকটর এবং interface নিয়ে আলোচনা করব |

Author : M. Raihan

ফেইসবুকের সাহায্যে মন্তব্য দিন

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Comments