CodeGym /Kurslar /JAVA 25 SELF /Obyektlərin new vasitəsilə yaradılması

Obyektlərin new vasitəsilə yaradılması

JAVA 25 SELF
Səviyyə, Dərs
Mövcuddur

1. Açar söz new

Java-da istənilən sinifin obyektini yaratmaq üçün new açar sözündən istifadə olunur. Bu “sehrli” söz JVM-ə belə müraciət edir: yeni obyekt üçün yaddaş ayır və onun üçün konstruktoru çağır.

Analoqiya:
Əgər sinif — bu, avtomobilin layihəsidirsə, new — həmin layihə əsasında real maşını yığan zavoddur.

Nümunə

Person vasya = new Person();

Burada nə baş verir:

  1. new Person() — Person tipində yeni obyekt yaradılır (konstruktor çağırılır).
  2. vasya — yaradılmış obyektə istinadı saxlayan dəyişəndir.

Yaddaşda bu necə görünür

Person vasya = new Person(); yazdıqda, yaddaşda obyektin sahələri (məsələn, ad və yaş) üçün yer ayrılır, və vasya dəyişəni həmin sahənin ünvanını — istinadı saxlayır.

Diqqət:
Əgər new yazmağı unutsanız, dəyişən heç nəyə işarə etməyən sadəcə istinad olacaq (null). Belə “boş” obyektin sahələrinə və ya metodlarına müraciət etməyə cəhd NullPointerException-a səbəb olacaq.

2. Konstruktora çağırış: bu necə işləyir?

Konstruktor — obyekt yaradılarkən çağırılan və onun sahələrini ilkinləşdirən, nümunəni işləməyə hazırlayan xüsusi metoddur.

Sintaksis

ImyaKlassa imyaPeremennoy = new ImyaKlassa(argumenty);
  • Sinifin parametrləri olan konstruktoru varsa, bu parametrlər mütləq ötürülməlidir.
  • Konstruktor parametrlərsizdirsə (və ya defolt olaraq), mötərizələr boş qalır.

Nümunə: parametrləri olan konstruktor

public class Person {
    String name;
    int age;

    // Parametrləri olan konstruktor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Obyekt yaradırıq:

Person petya = new Person("Petya", 25);

"Petya" və 25 dəyərləri yeni obyektin name və age sahələrinə düşəcək.

Parametrlərsiz konstruktor

public Person() {
    this.name = "Adsız";
    this.age = 0;
}

İndi belə yaza bilərsiniz:

Person mysteryMan = new Person(); // name="Adsız", age=0

3. Obyektlə işləmə: sahələr və metodlar

Obyekt yaradıldıqdan sonra, onun sahə və metodlarına nöqtə operatoru (.) vasitəsilə müraciət edə bilərsiniz:

petya.name = "Pyotr";
System.out.println(petya.name); // Pyotr

petya.sayHello();

Əgər sinifdə belə bir metod varsa:

public void sayHello() {
    System.out.println("Salam, mənim adım " + name + "!");
}

O zaman petya.sayHello(); çağırışı belə çıxış verəcək: Salam, mənim adım Pyotr!

Nümunə: tam sinif

public class Person {
    String name;
    int age;

    public Person(String name, int age) { // konstruktor
        this.name = name;
        this.age = age;
    }

    public void sayHello() { // metod
        System.out.println("Salam, mənim adım " + name + "!");
    }
}

İstifadə:

Person vasya = new Person("Vasya", 30);
vasya.sayHello(); // Salam, mənim adım Vasya!

4. İstinad tipli dəyişənlər: bu nədir?

Java-da sinif tipli dəyişən — yaddaşdakı obyektə istinaddır, obyektin özü deyil.

Demonstrasiya

Person vasya = new Person("Vasya", 30);
Person anotherVasya = vasya;

İndi həm vasya, həm də anotherVasya yaddaşda eyni obyektə işarə edir. Sahəni bir dəyişənlə dəyişsəniz — o biri üçün də dəyişəcək:

anotherVasya.age = 31;
System.out.println(vasya.age); // 31

Vacib məqam:
Əgər iki fərqli obyekt yaratsanız, onlar müstəqildir:

Person petya = new Person("Petya", 25);
Person masha = new Person("Masha", 22);

petya.age = 99;
System.out.println(masha.age); // 22 (dəyişməyib!)

5. Nümunə: bir neçə obyektin yaradılması və istifadəsi

Tətbiqə bir neçə obyekt əlavə edək. Gəlin Person sinfimiz olsun, və main-də bir neçə insan yaradaq, onların salamlarını çıxışa verək.

Person sinfi

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void sayHello() {
        System.out.println("Salam, mənim adım " + name + ", " + age + " yaşım var!");
    }
}

main-də istifadə

public class Main {
    public static void main(String[] args) {
        Person vasya = new Person("Vasya", 25);
        Person petya = new Person("Petya", 27);

        vasya.sayHello(); // Salam, mənim adım Vasya, 25 yaşım var!
        petya.sayHello(); // Salam, mənim adım Petya, 27 yaşım var!

        // Obyektlərin müstəqilliyinin demonstrasiyası:
        vasya.age = 100;
        vasya.sayHello(); // Salam, mənim adım Vasya, 100 yaşım var!
        petya.sayHello(); // Salam, mənim adım Petya, 27 yaşım var!
    }
}

Proqramın çıxışı:

Salam, mənim adım Vasya, 25 yaşım var!
Salam, mənim adım Petya, 27 yaşım var!
Salam, mənim adım Vasya, 100 yaşım var!
Salam, mənim adım Petya, 27 yaşım var!

6. Obyekt yaradarkən tipik səhvlər

Səhv №1: new yazmağı unutmusunuz

Person vasya;
vasya.name = "Vasya"; // NullPointerException!

vasya dəyişəni heç bir obyektə istinad etmir (null). Mütləq new ilə obyekt yaratmaq lazımdır.

Səhv №2: Konstruktora parametrlər ötürülməyib

Person petya = new Person(); // Əgər parametrlərsiz konstruktor yoxdursa, kompilyasiya xətası

Əgər sinifdə yalnız parametrləri olan konstruktor varsa, obyekt yaradarkən bu parametrləri mütləq göstərmək lazımdır.

Səhv №3: Dəyişənin obyektin özünü saxladığını düşünmək

Person a = new Person("Anya", 20);
Person b = a;
b.age = 99;
System.out.println(a.age); // 99, çünki a və b — eyni obyektə istinaddır!

Java-da sinif tipli dəyişən — həmişə istinaddır, obyektin özü deyil.

Səhv №4: Bir obyektin sahələrini dəyişirsiniz, digərinin dəyişməyəcəyini gözləyirsiniz

Person x = new Person("X", 1);
Person y = x;
x.age = 42;
System.out.println(y.age); // 42

İki müstəqil obyekt lazımdırsa — onları ayrıca yaradın!

1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Sizin ilk virtual ev heyvanınız
Sizin ilk virtual ev heyvanınız
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Rəqəmsal sığınacağa yeni sakin gəlməsi
Rəqəmsal sığınacağa yeni sakin gəlməsi
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Virtual vitrində avtomobilləri yerləşdiririk
Virtual vitrində avtomobilləri yerləşdiririk
1
Tapşırıq
JAVA 25 SELF, səviyyə, dərs
Bağlanıb
Kitabxanada kitabların uçotu: yeni daxil olanlar
Kitabxanada kitabların uçotu: yeni daxil olanlar
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION