1. Nggawe obyek

Inggih, kita wis teka ing nggawe obyek. Sampeyan wis nemoni iki sadurunge, nanging saiki kita bakal nganalisis topik iki kanthi luwih rinci. Sejatine gampang banget kanggo nggawe obyek.

Kanggo nggawe obyek, sampeyan kudu nggunakake operator anyar . Nggawe obyek katon kaya iki:

new Class(arguments)

Sawise nggawe obyek, paling asring kita langsung nyimpen referensi ing variabel, sing asring nuduhake jinis sing padha karo obyek sing digawe. Tegese nalika nggawe obyek, sampeyan biasane ndeleng kode kaya iki:

Class name = new Class(arguments)

Ing endi nggawe variabel anyar, lan kode ing sisih tengen tandha padha yaiku nggawe obyek anyar sing jinise .Class nameClass

Tuladha:

Kode Cathetan
Object o = new Object();
Nggawe Objectobyek
Cat pet = new Cat();
Nggawe Catobyek
Scanner console = new Scanner(System.in)
Nggawe Scannerobyek

Programer asring menehi jeneng variabel sawise kelas, nanging nganggo huruf cilik. Kanggo programmer anyar, kode kasebut bisa mbingungake:

Kode
BufferedReader bufferedReader = new BufferedReader( reader );
Cat cat = new Cat();
PersonInfo personInfo = new PersonInfo()

Ora ana sing salah karo kode iki - iki minangka kode sing paling biasa, ing ngendi variabel digawe banjur langsung diinisialisasi dening obyek saka jinis sing padha.

Ing sisih kiwa tandha padha kita duwe nggawe variabel. Ing sisih tengen, nggawe obyek. Mekaten.

2. Konstruktor

Sampeyan mbokmenawa wis weruh sawetara argumen sing kerep dilewati nalika nggawe obyek. Apa maneh, argumen diterusake kanggo sawetara obyek, nanging ora liyane. Kepiye mekanisme kabeh iki kanthi argumentasi?

Kabeh uga prasaja ing kene: saben kelas duwe cara khusus (utawa cara) sing tanggung jawab kanggo nangani argumen sing diterusake nalika nggawe obyek. Cara kasebut diarani konstruktor . Utawa nalika kita ngomong babagan mung siji: konstruktor .

Mbedakake cara konstruktor saka cara biasa gampang. Cara iki nduweni rong fitur sing mbedakake:

  • jeneng konstruktor padha karo jeneng kelas (lan diwiwiti kanthi huruf kapital)
  • konstruktor ora duwe jinis bali.

Umumé, iki biasane katon kaya:

modifiers Class(arguments)
{
   Code
}

Tuladha:

Kode Cathetan
public class Point
{
   public int x;
   public int y;

   Point(int x, int y)
   {
      this.x = x;
      this.y = y;
   }
}
Point




Pointkonstruktor kelas
public class Solution
{
   public static void main(String[] args)
   {
      Point point = new Point(5, 10);
   }
}




Nggawe obyek saka Pointkelas. Konstruktor kelas bakal diarani.

Wigati apa konstruktor katon kaya: ora duwe jinis bali lan jenenge padha karo jeneng kelas.

Lan siji liyane: njupuk dipikir ing kode nang konstruktor. Paramèter konstruktor duwe jeneng sing padha karo kolom kelas: x lan y. Praktek standar supaya ora nggawe jeneng parameter novel. Jenenge padha karo lapangan kelas. Konflik jeneng dirampungake nggunakake tembung kunci iki.

3. Nelpon konstruktor

Nalika nggunakake operator anyar lan prentah kaya " Kelas anyar ( argumen )" kanggo nggawe obyek anyar, ana rong perkara:

  • Mesin Java nggawe obyek sing jinise yaiku Kelas
  • Mesin Java nelpon konstruktor obyek lan mlebu ing argumen sampeyan

Minangka programmer, sampeyan kudu mutusake apa konstruktor kelas sampeyan, lan paramèter apa sing kudu diduweni para konstruktor kasebut.

Upamane sampeyan arep nggawe kelas kanggo nglacak kucing ing papan perlindungan kewan. Banjur Catkelas sampeyan bisa uga katon kaya iki:

class Cat
{
   public String name;
   public int age;

   public Cat(String name, int age)
   {
      this.name = name;
      this.age = age;
   }
}
Cat cat = new Cat("Whiskers", 2);
Iki diijini
Cat cat = new Cat("Whiskers");
Nanging iki ora diidini Kode iki ora bakal dikompilasi.
Cat cat = new Cat();
Lan iki ora diijini. Kode iki ora bakal kompilasi.

Kelas kasebut Catmung duwe siji konstruktor kanthi paramèter jeneng lan umur. Amarga ora ana konstruktor liyane, sampeyan kudu ngliwati jeneng kucing ( name) lan umur ( age) minangka argumen nalika nggawe obyek. Maringake argumen menyang konstruktor ora opsional .

4. Multiple konstruktor

Nanging yen perlu, sampeyan bisa nambah sawetara konstruktor kanggo kelas. Ora ana watesan ing jumlah konstruktor utawa paramèter. Nalika sampeyan nggawe obyek, compiler kanthi otomatis milih konstruktor sing cocog karo paramèter

Kode Cathetan
class Cat
{
   public static final int UNKNOWN = -1;
   public String name;
   public int age;

   public Cat(String name, int age)
   {
      this.name = name;
      this.age = age;
   }
   public Cat(String name)
   {
      this.name = name;
      this.age = UNKNOWN; // Unknown
   }
}
Cat cat = new Cat("Whiskers", 2);
Iki diijini: konstruktor pisanan bakal diarani
Cat cat = new Cat("Whiskers");
Iki diijini: konstruktor kapindho bakal diarani
Cat cat = new Cat();
Nanging iki ora diidini Kode iki ora bakal dikompilasi.

Kita mutusake kanggo nyatakake yen umur kucing bisa uga ora dingerteni. Kanggo nangani kasus iki, kita nambahake konstanta khusus UNKNOWNbebarengan karo konstruktor sing mung nduweni siji parameter - jeneng kucing.

Elinga yen kita isih initialize loro variabel nang loro konstruktor. Kita ngganti paramèter sing ora dingerteni / ilang karo konstanta UNKNOWN.

Yen ora ana nilai sing ditugasake kanggo variabel umur, mula bakal duwe nilai standar 0. Sawise kabeh, kucing sing ditemokake ing dalan bisa uga 0 taun lengkap. Tegese nol ing variabel umur ora ateges "umur sing ora dingerteni".

5. Default konstruktor

Yen sampeyan pengin obyek bisa instantiated tanpa paramèter, kelas sampeyan kudu ngumumake konstruktor tanpa argumentasi.

Konstruktor tanpa paramèter ora kudu konstruktor tanpa kode. Konstruktor kasebut bisa ngemot kode sing miwiti variabel kanthi nilai wiwitan:

Kode Cathetan
class Cat
{
   public static final int UNKNOWN = -1;
   public String name;
   public int age;

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

   public Cat()
   {
      this.name = "Nameless";
      this.age = UNKNOWN; // Unknown
   }
}
Cat cat = new Cat("Whiskers", 2);
Iki diijini: konstruktor pisanan bakal diarani
Cat cat = new Cat();
Iki diijini: konstruktor kapindho bakal diarani

Konstruktor standar

Ana titik penting sing kudu sampeyan ngerti lan eling.

Yen kelas sampeyan nyatakake ora siji konstruktor , kompiler bakal nambah konstruktor standar, yaiku konstruktor tanpa argumentasi karo modifier umum.

Nanging yen kelas sampeyan ngumumake siji konstruktor , mula ora ana konstruktor standar sing bakal ditambahake lan sampeyan kudu nambahake dhewe yen sampeyan pengin.

Kode Cathetan
class Cat
{
   public String name;
   public int age;
}
Cat cat = new Cat();
Iki diijini: konstruktor standar bakal diarani