"হ্যালো, অ্যামিগো! এখন আমি আপনাকে বলতে যাচ্ছি কিভাবে বস্তু তৈরি হয়।"

"এতে এত জটিলতার কি আছে, আঙ্কেল ঋষি? আপনি নতুন এবং ক্লাসের নাম লিখুন, সঠিক কনস্ট্রাক্টর নির্দেশ করুন, এবং আপনার কাজ শেষ!"

"এটা সত্য। কিন্তু আপনি যখন এটি করেন তখন বস্তুর ভিতরে কি হয়?"

"কি ঘটেছে?"

"এটিই ঘটে: বস্তুটি বিভিন্ন পর্যায়ে তৈরি হয়।"

1)  প্রথমত, সমস্ত ক্লাসের সদস্য ভেরিয়েবলের জন্য মেমরি বরাদ্দ করা হয়।

2)  তারপর বেস ক্লাস শুরু করা হয়।

3)  তারপর সমস্ত ভেরিয়েবলের মান নির্ধারণ করা হয়, যদি কোনো নির্দিষ্ট করা থাকে।

4)  অবশেষে, কনস্ট্রাক্টর বলা হয়।

"এটা খুব কঠিন মনে হচ্ছে না: প্রথমে ভেরিয়েবল, তারপর কনস্ট্রাক্টর।"

"আসুন দেখি কিভাবে এটি দুটি ক্লাস সহ একটি উদাহরণে কাজ করে:"

কোড বর্ণনা
class Pet
{
 int x = 5, y = 5; -
 int weight = 10; -

 Pet(int x, int y)
 {
  this.x = x; -
  this.y = y; -
 }
}
class Cat extends Pet
{
 int tailLength = 8; -
 int age;
 Cat(int x, int y, int age)
 {
  super(x, y); -
  this.age = age; -
 }
}
দুটি শ্রেণী ঘোষণা করুন: Pet(pet) এবং Cat(cat)।

ক্যাট ক্লাসে, আমরা বেস ক্লাসের কনস্ট্রাক্টরের কাছে একটি স্পষ্ট কল দেখতে পাই ।
এটি সর্বদা কন্সট্রাক্টরের প্রথম লাইনে থাকা উচিত।

মেমরি বরাদ্দ করার পরে যা হয় তা এখানে:
18  – বেস ক্লাসের কনস্ট্রাক্টরকে কল করুন।
3, 4  - পেটে ভেরিয়েবল শুরু করুন।
8, 9  – পেট কনস্ট্রাক্টরে কোডটি চালান।

তারপর ক্যাট ক্লাস শুরু করা শুরু হয়।
14 - ক্যাট
19-  এ ভেরিয়েবল শুরু করুন  - ক্যাট কনস্ট্রাক্টরে কোডটি কার্যকর করুন

public static void main(String[] args)
{
 Cat cat = new Cat (50, 50, 5);
}

"এটা একটু বিভ্রান্তিকর। কেন এটা এত জটিল?"

"এটা আসলে কঠিন নয় যদি আপনি জানেন যে আসলে কি ঘটছে:"

যদি একটি ক্লাসের কোনো কনস্ট্রাক্টর না থাকে, তাহলে একটি স্বয়ংক্রিয়ভাবে তৈরি হবে।

ডিফল্ট কনস্ট্রাক্টর
class Cat
{
 int x = 5;
 int y = 5;
}
class Cat
{
 int x = 5;
 int y = 5;
 public Cat() 
 {
 }
}

আপনি যদি বেস ক্লাস কনস্ট্রাক্টরকে কল না করেন তবে এটি স্বয়ংক্রিয়ভাবে কল করা হবে।

বেস ক্লাসের কনস্ট্রাক্টরের কল
class Pet
{
 public String name;
}
class Pet extends Object
{
 public String name;
 public Pet()
 {
  super();
 }
}
class Cat extends Pet
{
 int x = 5;
 int y = 5;
}
class Cat extends Pet
{
 int x = 5;
 int y = 5;
 public Cat()
 {
  super();
 }
}

সদস্য ভেরিয়েবলগুলি কনস্ট্রাক্টরে আরম্ভ করা হয়।

সদস্য ভেরিয়েবলের সূচনা
class Cat
{
 int x = 5;
 int y = 5;
}
class Cat
{
 int x;
 int y;
 public Cat()
 {
  super();
  this.x = 5;
  this.y = 5;
  }
}
আসলেই কি হয়
class Pet
{
 int x = 5, y = 5;
 int weight = 10;
 Pet(int x, int y)
 {
  this.x = x;
  this.y = y;
 }
}

class Cat extends Pet
{
 int tailLength = 8;
 int age;
 Cat(int x, int y, int age)
 {
  super(x, y);
  this.age = age;
 }
}
class Pet extends Object
{
 int x;
 int y;
 int weight;

 Pet(int x, int y)
 {
  //call of the base class's constructor
  super();
  //initialize variables
  this.x = 5;
  this.y = 5;
  this.weight = 10;
  //execute the constructor code
  this.x = x;
  this.y = y;
 }
}
class Cat extends Pet
{
 int tailLength;
 int age;
 Cat(int x, int y, int age)
 {
  //call of the base class's constructor
   super(x, y);
  //initialize variables
  this.tailLength = 8;
  //execute the constructor code
  this.age = age;
 }
}

"এখন এটা অনেক বেশি পরিষ্কার: প্রথমে বেস ক্লাস, তারপর কনস্ট্রাক্টরের বাইরে ভেরিয়েবল, তারপর কনস্ট্রাক্টর কোড।"

"শাবাশ, অ্যামিগো! এটাই তো!"