"Hello, Amigo! Sekarang saya akan memberitahu anda tentang cara objek dicipta."

"Apa yang rumit tentangnya, Uncle Rishi? Anda tulis nama baru dan kelas, tunjukkan pembina yang betul, dan anda sudah selesai!"

"Itu benar. Tetapi apa yang berlaku di dalam objek apabila anda berbuat demikian?"

"Apa yang berlaku?"

"Inilah yang berlaku: Objek dicipta dalam beberapa peringkat."

1)  Pertama, memori diperuntukkan untuk semua pembolehubah ahli kelas.

2)  Kemudian kelas asas dimulakan.

3)  Kemudian semua pembolehubah diberi nilai, jika ada yang ditentukan.

4)  Akhirnya, pembina dipanggil.

"Ia tidak kelihatan sangat sukar: pertama pembolehubah, kemudian pembina."

"Mari kita lihat cara ini berfungsi dalam contoh dengan dua kelas:"

Kod Penerangan
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; ←-
 }
}
Isytiharkan dua kelas: Haiwan peliharaan(haiwan peliharaan) dan Kucing(kucing).

Dalam kelas Cat, kita melihat panggilan eksplisit kepada pembina kelas asas .
Ia harus sentiasa berada pada baris pertama dalam pembina.

Inilah yang berlaku selepas memori diperuntukkan:
18  – panggil pembina kelas asas.
3, 4  – mulakan pembolehubah dalam Pet.
8, 9  – laksanakan kod dalam pembina Binatang.

Kemudian kelas Cat mula dimulakan.
14  – mulakan pembolehubah dalam Cat
19  – laksanakan kod dalam pembina Cat

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

"Itu agak mengelirukan. Kenapa rumit sangat?"

"Ia sebenarnya tidak sukar jika anda tahu apa yang sebenarnya berlaku:"

Jika kelas tidak mempunyai sebarang pembina, satu akan dibuat secara automatik.

Pembina lalai
class Cat
{
 int x = 5;
 int y = 5;
}
class Cat
{
 int x = 5;
 int y = 5;
 public Cat() 
 {
 }
}

Jika anda tidak memanggil pembina kelas asas, ia akan dipanggil secara automatik.

Panggilan pembina kelas asas
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();
 }
}

Pembolehubah ahli dimulakan dalam pembina.

Permulaan pembolehubah ahli
class Cat
{
 int x = 5;
 int y = 5;
}
class Cat
{
 int x;
 int y;
 public Cat()
 {
  super();
  this.x = 5;
  this.y = 5;
  }
}
Apa sebenarnya yang berlaku
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;
 }
}

"Kini ia lebih jelas: pertama kelas asas, kemudian pembolehubah di luar pembina, kemudian kod pembina."

"Syabas, Amigo! Itu sahaja!"