11. Constructor¶
Oldingi bobda class va object bilan tanishdik.
Object yaratgandan keyin unga qiymat berishimiz mumkin edi:
Student talaba = new Student();
talaba.ism = "Ali";
talaba.yosh = 18;
Buni har safar alohida yozish o‘rniga constructor ishlatishimiz mumkin.
Constructor nima?¶
Constructor — object yaratilganda avtomatik ishlaydigan maxsus qism.
Masalan:
class Student {
String ism;
int yosh;
Student() {
System.out.println("Student yaratildi.");
}
}
Object yaratamiz:
Student talaba = new Student();
Natija:
Student yaratildi.
new Student() bajarilganda constructor avtomatik chaqirildi.
Constructor qanday yoziladi?¶
Constructorning nomi class nomi bilan bir xil bo‘ladi.
Masalan:
class Car {
Car() {
System.out.println("Mashina yaratildi.");
}
}
Bu yerda:
Car()
constructor hisoblanadi.
Muhim:
Constructor oldidan void, int yoki boshqa return type yozilmaydi.
Noto‘g‘ri:
void Car() {
}
To‘g‘ri:
Car() {
}
Constructor orqali qiymat berish¶
Constructorning eng foydali tomoni — object yaratilayotgan paytda qiymat berish.
Masalan:
class Student {
String ism;
int yosh;
Student(String ism, int yosh) {
this.ism = ism;
this.yosh = yosh;
}
}
Endi:
Student talaba = new Student("Ali", 18);
Object yaratilishi bilan:
ism = Ali
yosh = 18
bo‘ladi.
this nima?¶
Yuqoridagi kodda:
this.ism = ism;
ikki marta ism yozilgan.
Birinchi:
this.ism
classdagi field.
Ikkinchi:
ism
constructorga berilgan parametr.
Ya'ni:
this.ism = ism;
"Objectning ism qiymatiga berilgan ism qiymatini joylashtir" degan ma'noni anglatadi.
To‘liq misol¶
class Student {
String ism;
int yosh;
Student(String ism, int yosh) {
this.ism = ism;
this.yosh = yosh;
}
}
public class Main {
public static void main(String[] args) {
Student talaba = new Student("Ali", 18);
System.out.println(talaba.ism);
System.out.println(talaba.yosh);
}
}
Natija:
Ali
18
Bir nechta object yaratish¶
Constructor yordamida turli objectlarni juda oson yaratish mumkin.
Student talaba1 = new Student("Ali", 18);
Student talaba2 = new Student("Vali", 20);
Student talaba3 = new Student("Hasan", 19);
Har bir object o‘z qiymatlariga ega bo‘ladi.
Constructor va method farqi¶
Constructor va method bir-biriga o‘xshashi mumkin, lekin ular boshqa-boshqa narsalar.
Constructor¶
Object yaratilganda avtomatik ishlaydi.
Student(String ism) {
this.ism = ism;
}
Method¶
Biz uni kerak bo‘lganda chaqiramiz.
void salomBer() {
System.out.println("Salom!");
}
Masalan:
talaba.salomBer();
Constructor avtomatik chaqiriladi¶
Masalan:
class Car {
Car() {
System.out.println("Constructor ishladi.");
}
}
Keyin:
Car mashina = new Car();
Biz:
constructor()
deb yozmadik.
Lekin constructor avtomatik ishladi.
Parametrsiz constructor¶
Constructor parametr qabul qilmasligi ham mumkin.
class Car {
Car() {
System.out.println("Yangi mashina.");
}
}
Object:
Car mashina = new Car();
Parametrli constructor¶
Constructor parametr qabul qilishi mumkin.
class Car {
String model;
Car(String model) {
this.model = model;
}
}
Object:
Car mashina = new Car("BMW");
Endi:
System.out.println(mashina.model);
Natija:
BMW
Bir nechta constructor¶
Bitta classda bir nechta constructor bo‘lishi mumkin.
Masalan:
class Student {
String ism;
int yosh;
Student() {
ism = "Noma'lum";
yosh = 0;
}
Student(String ism, int yosh) {
this.ism = ism;
this.yosh = yosh;
}
}
Endi ikkala usuldan ham foydalanish mumkin:
Student talaba1 = new Student();
Student talaba2 = new Student("Ali", 18);
Bu constructor overloading deyiladi.
Hozircha uning nomini eslab qolish kifoya.
Constructor yordamida method chaqirish¶
Constructor ichida boshqa kodlarni ham yozish mumkin.
Masalan:
class Car {
String model;
Car(String model) {
this.model = model;
System.out.println(model + " yaratildi.");
}
}
Object:
Car mashina = new Car("Toyota");
Natija:
Toyota yaratildi.
Real hayotdagi misol¶
Tasavvur qiling, yangi o‘quvchi tizimga qo‘shilmoqda.
Student talaba = new Student("Ali", 18);
Constructor:
Student(String ism, int yosh)
object yaratilayotgan paytda o‘quvchining ismi va yoshini qabul qiladi.
Bu ma'lumotlar object ichida saqlanadi.
Amaliy mashqlar¶
1-mashq¶
Car classini yarating.
Unda:
model
rang
fieldlari bo‘lsin.
Constructor orqali ularga qiymat bering.
Masalan:
Car mashina = new Car("BMW", "Qora");
2-mashq¶
Student classini yarating.
Constructor:
ism
yosh
qabul qilsin.
3-mashq¶
Book classini yarating.
Constructor orqali:
nom
muallif
sahifalar
qiymatlarini bering.
4-mashq¶
Parametrsiz constructor yarating.
U object yaratilganda:
Object yaratildi.
degan yozuvni chiqarsin.
5-mashq¶
Bitta classda ikkita constructor yarating:
parametrsiz
va:
parametrli
Keyin ikkalasidan ham foydalanib ko‘ring.
Muhim narsalarni eslab qoling¶
Constructor object yaratilganda avtomatik ishlaydi.
Constructor nomi class nomi bilan bir xil bo‘ladi.
Masalan:
class Student {
Student() {
}
}
Constructor qiymat qabul qilishi mumkin:
Student(String ism, int yosh) {
this.ism = ism;
this.yosh = yosh;
}
Object yaratish:
Student talaba = new Student("Ali", 18);
this joriy objectni bildiradi.
Constructor objectga boshlang‘ich qiymat berishda juda foydali.