Konstruktorlar
Oddiy usullardan tashqari, sinflar konstruktorlar deb ataladigan maxsus usullarni belgilashi mumkin . Konstruktorlar berilgan sinfning yangi obyekti yaratilganda chaqiriladi. Konstruktorlar ob'ektni ishga tushirishni amalga oshiradilar.
Agar sinfda konstruktor aniqlanmagan bo'lsa, u holda ushbu sinf uchun avtomatik ravishda parametrsiz konstruktor yaratiladi.
Yuqorida belgilangan Person sinfida konstruktorlar mavjud emas. Shuning uchun, u uchun avtomatik ravishda standart konstruktor yaratiladi, biz undan Person ob'ektini yaratish uchun foydalanishimiz mumkin. Xususan, bitta ob'ekt yarataylik:
bitta
2
3
4
besh
6
7
8
to'qqiz
10
o'n bir
12
13
o'n to'rt
15
16
17
o'n sakkiz
19
yigirma
21
|
public class Program{
public static void main(String[] args) {
Person tom = new Person(); // создание объекта
tom.displayInfo();
// изменяем имя и возраст
tom.name = "Tom";
tom.age = 34;
tom.displayInfo();
}
}
class Person{
String name; // имя
int age; // возраст
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Shaxs ob'ektini yaratish uchun ifoda ishlatiladi new Person(). Yangi operator Person obyekti uchun xotira ajratadi. Va keyin standart konstruktor chaqiriladi, u hech qanday parametrlarni olmaydi. Natijada, ushbu ifoda bajarilgandan so'ng, xotirada Person ob'ektining barcha ma'lumotlari saqlanadigan bo'lim ajratiladi. Va o'zgaruvchi tomyaratilgan ob'ektga havola oladi.
Agar konstruktor ob'ekt o'zgaruvchilari qiymatlarini ishga tushirmasa, ular standart qiymatlarini oladilar. O'zgaruvchining raqamli turlari uchun bu 0 raqami, string tipi va sinflar uchun esa bu null (ya'ni, aslida qiymatning yo'qligi).
Ob'ektni yaratgandan so'ng, biz tom o'zgaruvchisi orqali Person ob'ektining o'zgaruvchilariga kirishimiz va ularning qiymatlarini belgilashimiz yoki olishimiz mumkin, masalan, tom.name = "Tom".
Natijada, biz konsolda ko'ramiz:
Ism: null Yosh: 0
Ism: Tom Yosh: 34
Agar ob'ektni yaratishda ba'zi bir mantiqni bajarish kerak bo'lsa, masalan, sinf maydonlari qandaydir o'ziga xos qiymatlarni qabul qilsa, u holda siz sinfda o'zingizning konstruktorlaringizni belgilashingiz mumkin. Misol uchun:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
30
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
public class Program{
public static void main(String[] args) {
Person bob = new Person(); // вызов первого конструктора без параметров
bob.displayInfo();
Person tom = new Person("Tom"); // вызов второго конструктора с одним параметром
tom.displayInfo();
Person sam = new Person("Sam", 25); // вызов третьего конструктора с двумя параметрами
sam.displayInfo();
}
}
class Person{
String name; // имя
int age; // возраст
Person()
{
name = "Undefined";
age = 18;
}
Person(String n)
{
name = n;
age = 18;
}
Person(String n, int a)
{
name = n;
age = a;
}
void displayInfo(){
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
|
Sinf endi uchta konstruktorni aniqlaydi, ularning har biri har xil miqdordagi parametrlarni oladi va sinf maydonlarining qiymatlarini o'rnatadi.
Dasturning konsol chiqishi:
Ism: Aniqlanmagan Yosh: 18
Ism: Tom Yosh: 18
Ism: Sem Yosh: 25
Do'stlaringiz bilan baham: |