Java Konstruktor (Sinf/Class)

Java dasturlash tilida, konstruktor metodga o’xshash kodlar blokidan iborat va joriy classdan obyekt yaratish uchun ishlatiladi. Konstruktor chaqirilganda, obyekt uchun xotiradan joy band qilinadi.

Har safar new kalit so’zi ishlatilganda kamida bitta konstruktor chaqiriladi. Agar dasturchi tomonidan birorta ham konstruktor yozilmasa, Java kompilyatori default konstruktori yaratadi.

Java dasturlash tilida 2 xil konstruktor mavjud: parametrsiz va parametrli konstruktorlar. Java konstruktori yaratish uchun quyidagi qoidalarga amal qilish lozim:

  • Konstruktor nomi class nomi bilan bir xil bo’lishi kerak.
  • Konstruktor hech qanday qiymat qaytarmaydi.
  • Konstruktor abstract, static, final, synchronized kalit so’zlari bilan yozilmaydi.

Default konstruktorga misol keltiramiz. Eslatib o’tamiz, default konstruktor hech qanday parametr qabul qilmaydi:

public class Main {
   public static void main(String[] args) {
       Talaba talaba = new Talaba();
   }
}

class Talaba{

   Talaba(){
       System.out.println("Talaba sinfidan obyekt yaratildi.");
   }
}

Kod ishga tushirilganda talaba nomli obyekt yaratiladi va konsulga “Talaba sinfidan obyekt yaratildi.” xabari chiqadi.

Yaratilayotgan obyekt attributlariga dastlabki qiymatlarni berish uchun va parametrlarni qabul qiluvchi konstruktor parametrli konstruktor deyiladi. Quyidagi misolda Talaba sinfida 2 ta parameter yaratamiz va shu parametrlarga dastlabki qiymatlar beradigan paramterli konstruktor yordamida obyekt olamiz.

public class Main {
   public static void main(String[] args) {
       Talaba talaba = new Talaba(1, "Ahror"); // 1 Ahror
   }
}

class Talaba{

   int id;
   String ism;

   Talaba(int id1, String ism1){
       id = id1;
       ism = ism1;
   }

   void chopEtish(){
       System.out.println(id + " " + ism);
   }
}

Java class bir nechta konstruktorlarga ega bo’lishi mumkin. Konstruktorlar parametrlar soni va turi bilan bir-biridan farq qiladi. Keling, Talaba classimizda bir nechta turli konstruktorlar yaratamiz va ulardan foydalanamiz.

public class Main {
   public static void main(String[] args) {
       Talaba talaba1 = new Talaba("Hasan");
       talaba1.chopEtish();
       Talaba talaba2 = new Talaba(1, "Husan");
       talaba2.yoshi = 25;
       talaba2.chopEtish();
       Talaba talaba3 = new Talaba("Oysha", 29);
       talaba3.id = 2;
       talaba3.chopEtish();
       Talaba talaba4 = new Talaba(3, "Fotima", 29);
       talaba4.chopEtish();
   }
}

class Talaba{

   int id;
   String ism;
   int yoshi;

   Talaba(String ism1){
       ism = ism1;
   }

   Talaba(int id1, String ism1){
       id = id1;
       ism = ism1;
   }

   Talaba(String ism1, int yoshi1){
       ism = ism1;
       yoshi = yoshi1;
   }

   Talaba(int id1, String ismi1, int yoshi1){
       id = id1;
       ism = ismi1;
       yoshi = yoshi1;
   }

   void chopEtish(){
       System.out.println(id + " " + ism + " " + yoshi);
   }
}

Konsuldagi xabarlar quyidagicha:

0 Hasan 0 1 Husan 25 2 Oysha 29 3 Fotima 29

Shuningdek, Javada nusxalovchi konstruktor ham mavjud. U joriy sinfning biror obyektini parameter sifatida qabul qiladi va uning attributlari qiymatlarini o’zlashtirgan yangi obyekt yaratadi:

public class Main {
   public static void main(String[] args) { 
       Talaba talaba4 = new Talaba(3, "Fotima", 29);
       talaba4.chopEtish();
       Talaba talaba5 = new Talaba(talaba4);
       talaba5.chopEtish();
   }
}

class Talaba{

   int id;
   String ism;
   int yoshi;

   Talaba(Talaba t1){
       id = t1.id;
       ism = t1.ism;
       yoshi = t1.yoshi;
   }

   Talaba(int id1, String ismi1, int yoshi1){
       id = id1;
       ism = ismi1;
       yoshi = yoshi1;
   }

   void chopEtish(){
       System.out.println(id + " " + ism + " " + yoshi);
   }
}