আমরা সাধারনত জানি এক ক্লাস থেকে অন্য ক্লাসের ফিল্ড/ কন্সট্রাক্টর/মেথড ইউজ করতে হলে হলে তার অব্জেক্ট তৈরী করে সেই অব্জেক্ট এর মাধ্যমে অ্যাক্সেস করতে হয়।
কিন্তু ধরা যাক, এমন একটা পরিস্থিতি তৈরী হল যখন কোন ক্লাস থেকে তার সুপার ক্লাসের কোন ফিল্ড, কন্সট্রাক্টর বা মেথডকে কল করার প্রয়োজন পড়লো; আবার এমন কোন পরিস্থিতি হল যখন একই ক্লাস থেকে ওই ক্লাসেরই কোন ফিল্ড, কনস্ট্রাক্টর, মেথডকে কল করার প্রয়োজন হল। তখন আমাদের super এবং this কিওয়ার্ড এর হেল্প নিতে হয়।
super কিওয়ার্ড হল এমন কিওয়ার্ড যা নির্দিষ্ট কোন ক্লাসের সুপার ক্লাস রেফারেন্স হিসেবে কাজ করে আর this কিওয়ার্ড দিয়ে একই ক্লাসের কন্সট্রাক্টর/ফিল্ড/মেথড কে কল করা হয়। মানে ওই ক্লাসের রেফারেন্স হিসেবে কাজ করে। এজন্য এদেরকে ডট দিয়েই অ্যাক্সেস করা যায়।
Human ক্লাসে আমরা name এবং age কে ইনিসিয়াল করেছি সুপার ক্লাসের কন্সট্রাক্টরের সাহায্যে। কারন এটা অলরেডি ওখানে করা আছে। আর বাকি যেটা আছে তা আমরা এখানেই করে নিলাম। আবার খেয়াল করো আমরা কিন্তু this দিয়ে একই ক্লাসের gender কে কল করেছি। this এবং super এর কাজ একই শুধু পার্থক্য হল this কাজ করে একই ক্লাস হিসেবে আর super কাজ করে super ক্লাস হিসেবে।
উপরের প্রোগ্রামটি রান করলে নিন্মোক্ত আউটপুট দেখাবেঃ
super এবং this দিয়ে যত ধরনের কল করা হয় তা এক দৃষ্টিতে দেখানো হলঃ
কিন্তু ধরা যাক, এমন একটা পরিস্থিতি তৈরী হল যখন কোন ক্লাস থেকে তার সুপার ক্লাসের কোন ফিল্ড, কন্সট্রাক্টর বা মেথডকে কল করার প্রয়োজন পড়লো; আবার এমন কোন পরিস্থিতি হল যখন একই ক্লাস থেকে ওই ক্লাসেরই কোন ফিল্ড, কনস্ট্রাক্টর, মেথডকে কল করার প্রয়োজন হল। তখন আমাদের super এবং this কিওয়ার্ড এর হেল্প নিতে হয়।
super কিওয়ার্ড হল এমন কিওয়ার্ড যা নির্দিষ্ট কোন ক্লাসের সুপার ক্লাস রেফারেন্স হিসেবে কাজ করে আর this কিওয়ার্ড দিয়ে একই ক্লাসের কন্সট্রাক্টর/ফিল্ড/মেথড কে কল করা হয়। মানে ওই ক্লাসের রেফারেন্স হিসেবে কাজ করে। এজন্য এদেরকে ডট দিয়েই অ্যাক্সেস করা যায়।
public class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Human extends Animal {
private String gender;
public Human(String name, int age, String gender) {
super(name, age); //instantiate using super class constructor
this.gender = gender; //instantiate it in here
}
public String getGender() {
return gender;
}
public void think()
{
System.out.println("Can think");
}
}
Human ক্লাসে আমরা name এবং age কে ইনিসিয়াল করেছি সুপার ক্লাসের কন্সট্রাক্টরের সাহায্যে। কারন এটা অলরেডি ওখানে করা আছে। আর বাকি যেটা আছে তা আমরা এখানেই করে নিলাম। আবার খেয়াল করো আমরা কিন্তু this দিয়ে একই ক্লাসের gender কে কল করেছি। this এবং super এর কাজ একই শুধু পার্থক্য হল this কাজ করে একই ক্লাস হিসেবে আর super কাজ করে super ক্লাস হিসেবে।
public class StartUp {
public static void main(String[] args) {
Human aHuman = new Human("Rakib", 23, "Male");
System.out.println(aHuman.getName());
System.out.println(aHuman.getAge());
System.out.println(aHuman.getGender());
}
}
উপরের প্রোগ্রামটি রান করলে নিন্মোক্ত আউটপুট দেখাবেঃ
Rakib
23
Male
super এবং this দিয়ে যত ধরনের কল করা হয় তা এক দৃষ্টিতে দেখানো হলঃ
No comments:
Post a Comment