Constructors

Her hansi bir metodu cagirarken moterizelerden istifade olundugu kimi, obyektleri yaradan zamanda bu moterizelerden istifade olunur. Demek ki, obyekt yaradan zaman biz neyise cagiririq.
Eslinde obyekt yaradan zaman, consturctorlar vasitesile yaradiriq.


package com.consturctors;
public class Person {

    private String name;
    private String surname;
    private Integer age;

    public Person() {}

}

Tutaq ki, Person class movcuddur. Eger biz hech bir constructor yaratmamishiqsa, Java ozu avtomatik olaraq bu bosh consturctoru yaradir.

Person p = new Person();

new Person() yazdigimizda eslinde hemin bosh consturctoru cagirmish oluruq.

Bir class daxilinde ferqli sayda parametrli bir nece constructor ola biler.

Tutaq ki, yuxardaki kimi Person obyekti yaratdiq ve parametrli constructoru cagirmadiq. this() vasitesile , bir constructor daxilinden diger consturctoru cagirmaq olar.

package com.consturctors;
public class Person {

    private String name;
    private String surname;
    private Integer age;

    public Person() {
        this("undefined","undefined",-1);
        System.out.println("You called first constructor");
    }

    public Person(String name, String surname, Integer age){
        System.out.println("You called second constructor");
        this.name = name;
        this.surname = surname;
        this.age = age;
    }
}

Bu zaman, parametrsiz constructor istifade edib, obyekt yaratmaq istesek bele, hemin bosh constructor parametrli constructoru cagiracaq.
Bu metod icinden metod cagirmaga benzeyir. Ekrana sira ile :

You called second constructor
You called first constructor

cixacaq.

QEYD : 
  1. this keyword constructor-un body hissesinde birinci yazilmalidir.
  2. this vasitesile obyektin deyishenlerini diger constructora oturmek olmaz.
    Biz gormesek bele , constructor obyekt yaradan zaman, ilk setirde super() istifade edir. Obyekti yaradan eslinde super() -dir. Yuxardaki numunede,
    this deyerek eslinde hemin constructorun ishini saxladib diger constructor a otururuk. Yeni, obyekt yaranmir, super() istifade olunmur. Bu sebebe gore, this(this.name, this.surname, this.age) demek mumkun deyil. Yalniz this istifade etdikden sonra , yeni novbeti setirde
    this.name, this.surname , this.age istifade ede bilerik.

Comments

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi