যখন আমরা সুপার ক্লাসের ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর ব্যবহার করতে যাবো টিক তখনই আমরা সুপার কিওয়ার্ড ব্যবহার করবো।
যখন সুপার ক্লাস এবং সাব ক্লাসের ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর একই থাকবে তখন সুপার কিওয়ার্ড ব্যবহার হবে।
যদি না বুজেন তাহলে আরেকটু ভিতরে যাওয়া যাক। ধরুন আমাদের কাছে একটি ক্লাস এবং আরেকটি এর সাব ক্লাস রয়েছে। তাহলে প্রথমটি হয়ে যাবে সুপার ক্লাস। এখন আমরা সাব ক্লাস ধারা যদি কোনো অবজেক্ট তৈরী করি তাহলে নিয়ম অনুসারে সাব ক্লাসের ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর ব্যবহার করতে পারবো। কিন্তু সুপার ক্লাসের কোনো ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর ব্যবহার করতে পারবো না। তাই সাব ক্লাস ধারা সুপার ক্লাসের ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর ব্যবহার করতেই সুপার কিওয়ার্ড ব্যবহার করতে হয়।
চিত্রে ম্যাংগো হলো সুপার ক্লাস ও অরেঞ্জ হলো সাব ক্লাস। যেহুতু অরেঞ্জ ক্লাসটি সুপার ক্লাসকে এক্সটেন্ড (extends) করেছে তাই সুপার ক্লাসের যত ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর আছে তা সাব ক্লাস অরেঞ্জ ব্যবহার করতে পারবে।
চিত্রে অরেঞ্জ সাব ক্লাসের ভিতরে কনস্ট্রাটরে "supar();" ফাংশন দেওয়া আছে আপনি যদি এই ফাংশনটি না লিখেন জাভা কম্পাইলার নিজেই এটি লিখে দিবে। "supar();" ফাংশনটি ম্যাংগো সুপার ক্লাসের যত রকম ভ্যারিয়েবল, ফাংশন, কনস্ট্রাটর আছে সেগুলো কল করে।
চিত্রে বর্তমান অবস্থায় যদি আমরা অরেঞ্জ ক্লাসের ভিতরে x এর মান বের করি তাহলে অবশই ৫ আসবে কারণ অরেঞ্জ নিজেকে সবার আগে সে গুরুত্ব দিবে। তাই ম্যাংগো ক্লাসের x এর মান বের করতে হলে লিখতে হবে শুধুমাত্র "super.x"। চলুন কোডিং এর মাধ্যমে বিষয়টা আরো সহজ করা যাক।
ভ্যারিয়েবলের ক্ষেত্রে সুপার কিওয়ার্ড:
public class mango {
int x=10;
}
class orange extends mango{
int x=5;
void dis()
{
System.out.println(x); // call own class
System.out.println(super.x); // call mango class
}
}
class ans {
public static void main(String[] args)
{
orange ref=new orange();
ref.dis();
}
}
public class mango {
void dis()
{
System.out.println("I' m supar class");
}
}
class orange extends mango{
void dis()
{
super.dis();
System.out.println("I' m sub class");
}
}
class ans {
public static void main(String[] args)
{
orange ref=new orange();
ref.dis();
}
}
public class mango {
mango()
{
System.out.println("I' m supar class");
}
}
class orange extends mango{
orange()
{
super();
System.out.println("I' m sub class");
}
}
class ans {
public static void main(String[] args)
{
orange ref=new orange();
}
}
public class mango {
mango(int a)
{
System.out.println(a+" I' m supar class");
}
}
class orange extends mango{
orange()
{
super(4);
System.out.println("I' m sub class");
}
}
class ans {
public static void main(String[] args)
{
orange ref=new orange();
}
}