আগের টিউটোরিয়ালে আমরা ইনহেরিটেন্স সম্পর্কে জেনেছিলাম আজকে আমরা mainly ইন্টারফেস সম্পর্কে জানব । কিন্তু তার আগে ইনহেরিটেন্স এর short একটি রিভিউ আমরা আবার দিব ।
Inheritance
জাভা মাল্টিপল ইনহেরিটেন্স support করে না ।এখন আমরা আসি মাল্টিপল ইনহেরিটেন্স বলতে আমরা কি বুজি|
নিচে ইনহেরিটেন্স এর বেসিক একটি ডায়াগ্রাম দেখি :
এখানে আমরা দেখতে পাচ্ছি চাইল্ড ক্লাস তার প্যারেন্ট ক্লাসের সব রকম বৈশিষ্টই ধারণ করেসে কিন্তু প্যারেন্ট ক্লাসে চাইল্ড ক্লাসের সকল বৈশিষ্ট নাও থাকতে পারে । এখানে আমরা দেখতেসি যে প্যারেন্ট OR রুট ক্লাস only একটি যদি এই রকম হই যে দুই বা ততোধিক প্যারেন্ট ক্লাস থাকবে তখন আমরা কি করতে পারি ? আমরা আগেই বলেছি যে জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না । তবে হ্যা একটি উপায় আসে আর সেই উপায়ের নামই হলো ইন্টারফেস ।তাহলে বুজাই জাত্সে যে মাল্টিপল ইনহেরিটেন্সকেই আমরা ইন্টারফেস বলে থাকি|তবে আরেকটি বিষয় জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট না করলেও মাল্টিলেভেল ইনহেরিটেন্স সাপোর্ট করে । উপরের চিত্রটি তারই প্রমান |
এখন আমরা জানব ইন্টারফেস আসলে কী?
Interface
ইন্টারফেস এমন বিশেষ প্রক্রিয়া যেখানে কোনো ডিরাইভড ক্লাসের জন্য দুই বা ততোধিক বেস ক্লাস ব্যবহার করা হয় ।
এটি এক ধরনের বিশেষ ক্লাস যেটিতে কিছু final অথবা static টাইপ এর ভ্যারিয়েবল এবং মেথড থাকে| ইন্টারফেস এর সাধারণ ফরমেট হল :
Interface interfaceName
{
//variable;
//method declaration;
}
class DerivedClassName implements interfaceName
{
//DerivedClass variable declaration
//DerivedClass methods
//interface method
}
এখানে implements একটি keyword |
নিচে ইন্টারফেস এর কিছু ইমপ্লিমেন্টেশন ডায়াগ্রাম দেওয়া হল :
এখন আমরা ইন্টারফেস দিয়ে একটি প্রোগ্রাম দেখি:
আমরা সবাই কম বেশি Fibonacci series এর নাম শুনেছি , এখন ইন্টারফেস এর মাধ্যমে সেই প্রোগ্রামটি
আমরা এখানে করব
/*Coded By M. Raihan , Khulna University*/
//interface Example
public interface FiboSeries {
final static int n=11;
void fibo1();
}
class Cal implements FiboSeries {
//use of interface;
int f0,f1=1,f;
public void fibo1(){//fibonaci series programme;
for(int i=1;i<=n;i++){
f=f0+f1;
System.out.println(f);
f1=f0;
f0=f;
}
}
}
public class InterfaceExample {
public static void main(String[] args) {
Cal r1=new Cal();
r1.fibo1(); // calling the fibo method;
}
}
প্রোগ্রামটিতে আমরা দেখতে পাচ্ছি যে ইন্টারফেসে আমরা মেথড শুদু ডিক্লেয়ার করেছি কিন্তু বডি দেইনি বডি আমরা ডিরাইভড ক্লাসে ডিক্লেয়ার করেছি । আর কারণ হলো ইন্টারফেসের মেথড অবস্যই abstract হতে হবে । abstract সম্পর্কে আমরা নেক্সট টিউটোরিয়ালে জানব ।
আগের টিউটোরিয়ালে আমরা মেথড ওভাররাইডিং এবং মেথড ওভারলোডিং সম্পর্কে জেনে ছিলাম ।
আজকে তার একটি প্রোগ্রাম আমরা দেখব ।
Method Overriding Example :
/*Coded By M. Raihan , Khulna University*/
//Overriding Example
class Sup{
int x;
Sup(int x) {
this.x=x;
}
void display(){
System.out.println(“Insider Super Class x : “+x);
}
}
class Sub extends Sup{
int y,z;
Sub(int x ,int y,int z) {
super(x);
this.y=y;
this.z=z;
}
void display(){
System.out.println(“Insider Sub Class x : “+x);
System.out.println(“Insider Sub Class y : “+y);
System.out.println(“Insider Sub Class z : “+z);
super.display();
}
}
public class MethodOverRidding {
public static void main(String[] args) {
Sub s=new Sub(70,50,250);
s.display();
}
}
প্রোগ্রামটি খুবই simple ভাবে ওভাররাইডিং বুঝানো হয়েছে । এই প্রোগ্রামটি করার আগে আগের টিউটোরিয়াল থেকে কনসেপ্ট ক্লিয়ার করে নিতে হবে |
Method Overloading Example:
/*Coded By M. Raihan , Khulna University*/
//Overriding Example
public class OverloadingExampleClass {
public void addition(){
int a=2801,b=1020,result=0;
result=a+b;
System.out.println(“Addition : “+result);
}
public int addition(int a , int b){
int result = 0;
result= a+b;
System.out.println(“Addition : “+result);
return result;
}
public double addition(double a , double b){
double result = 0;
result= a+b;
System.out.println(“Addition : “+result);
return result;
}
}
public class Main {
public static void main(String[] args) {
OverloadingExampleClass ovd=new OverloadingExampleClass();
ovd.addition();
ovd.addition(15, 30);
ovd.addition(180.9, 110.31);
}
}
আজকে interface এর পর্ব এখানে ইতি টানছি নেক্সট টিউটোরিয়ালে আমরা প্যাকেজ (package ) নিয়ে আলোচনা করব |
Author : M. Raihan
মন্তব্য করুন
ফেইসবুক দিয়ে মন্তব্য