1. Obyek

Kabeh ing Jawa iku obyek.

Luwih tepate, ing Jawa mung ana barang sing dudu obyek. Contone, jinis primitif. Nanging iki minangka pangecualian sing rada langka kanggo aturan kasebut.

Dadi apa obyek?

Objek yaiku entitas sing nglumpukake data bebarengan karo metode sing ngolah data . Nalika kita ngomong "data", kita tegese variabel, mesthi.

Variabel obyek diarani "data" utawa "negara".

Metode obyek diarani minangka "prilaku". Biasane ngganti status obyek (variabel) mung nggunakake metode obyek kasebut. Ngganti variabel obyek kanthi langsung (ora nggunakake metode) dianggep minangka wujud ala.

Saben obyek , uga saben variabel, duwe jinis . Jinis iki ditemtokake sapisan nalika obyek digawe lan ora bisa diganti ing mangsa ngarep. Tipe obyek yaiku kelas.

Saben obyek duwe salinan variabel instance dhewe (lapangan). Yen int non-statis variabel diumumake ing kelas, lan program sampeyan nggawe 10 obyek saka kelas kasebut, saben obyek bakal duwe variabel int dhewe.

Interaksi karo obyek

Cara sing paling trep kanggo nggarap obyek yaiku nyimpen referensi kasebut ing variabel, banjur nelpon metode ing variabel kasebut. Iki bakal katon akrab karo sampeyan:

variable.method()

Where variablepunika variabel sing nyimpen referensi kanggo obyek, lan methodcara saka kelas sing.

Yen sampeyan pengin ngrujuk menyang kolom (variabel) obyek, sampeyan uga kudu nggunakake operator titik :

variable.field

Endi variablevariabel sing nyimpen referensi kanggo obyek, lan fieldvariabel conto (lapangan).


2. newoperator

Kanggo nggawe obyek saka kelas tartamtu, sampeyan kudu nggunakake newoperator. Umumé, kaya mangkene carane nggawe obyek:

Class variable = new Class(arguments);

Endi Classjeneng kelas variabel variableuga jeneng kelas obyek sing bakal digawe. Lan variable minangka variabel sing nyimpen referensi kanggo obyek sing digawe. Lan argumentsminangka placeholder kanggo dhaptar argumen sing diwatesi koma sing diterusake menyang konstruktor.

Dhaptar argumen tartamtu sing bisa dilewati diputusake dening programer sing nulis kelas kasebut.

Sampeyan wis nggawe obyek sadurunge lan malah nggunakake konstruksi tartamtu iki. Sampeyan ora lali, muga-muga?

Scanner console = new Scanner(System.in);
int x = console.nextInt();

Scanner console- iki nggawe consolevariabel sing jinis Scanner. - iki nggawe obyek anyar . Lan operator assignment nyetel variabel padha karo referensi kanggo obyek mentas digawe.new Scanner(System.in)Scannerconsole

Ing baris kapindho, kita nelpon nextInt()cara ing Scannerobyek, nggunakake consolevariabel, kang nyimpen referensi kanggo Scannerobyek.

Conto nggawe obyek:

Kode Katrangan
String s = new String("Hello");
Nggawe Stringobyek
Scanner console = new Scanner("");
Nggawe Scannerobyek
int[] data = new int[10];
Nggawe int[]: wadhah 10 intunsur

Obyek sing digawe diarani obyek kelas utawa instance saka kelas , dene kelas kasebut diarani kelas obyek . Contone, svariabel nyimpen referensi kanggo conto kelas String.



3. Ngenalake kelas

Aku sampeyan wis weruh carane trep banget kanggo nggunakake kelas ditulis dening programer liyane. Nanging kepiye carane nulis kelas sampeyan dhewe?

Kepiye sampeyan ngerti kapan lan ing ngendi sampeyan butuh kelas sampeyan dhewe lan carane nggawe?

Programer biasane nggawe kelas dhewe nalika pengin nggawa entitas anyar menyang program kasebut. Apa sing muni bingung? Banjur aku bakal nyoba nerangake, nanging aku bakal miwiti saka adoh.

Klompok data

Nyederhanakake sethithik, kita bisa ngomong yen obyek ing Jawa minangka blok memori sing ngemot variabel sing diumumake ing kelas (lapangan conto). Utawa, kanthi tembung liya, variabel digabung dadi klompok.

Contone, program sampeyan kudu nyimpen koordinat 100titik lan mbutuhake cara kanggo nampilake ing layar. Iki bisa ditindakake kanthi nggunakake array. Contone, kaya iki:

class Solution
{
   public static void printPoints(int[] x, int[] y, int[] color)
   {
     for (int i = 0; i < x.length; i++)
       System.out.println("Color of (" + x[i] + ", " + y[i] + ") = " + color[i]);
   }

   public static void main(String[] args)
   {
     int[] x = new int[100];
     int[] y = new int[100];
     int[] color = new int[100];
     printPoints(x, y, color);
   }
}

Iku bakal luwih trep yen kita duwe jinis siji kanggo nyimpen kabeh informasi bab titik: x, y, color. Yen jinis kasebut ora ana ing Jawa, sampeyan bisa nggawe dhewe.

Kanggo nindakake iki, kita bakal nulis kode kanggo Pointkelas:

public class Point
{
   public int x;
   public int y;
   public int color;
}

Saiki kode ing ndhuwur bisa ditulis maneh minangka:

class Solution
{
   public static void printPoints(Point[] points)
   {
     for (int i = 0; i < points.length; i++)
       System.out.println("Color of (" + points[i].x + ", " + point[i].y + ") = " + points[i].color);
   }

   public static void main(String[] args)
   {
     Point[] data = new Point[100];
     for (int i = 0; i < data.length; i++)
       data[i] = new Point();
     printPoints(data);
   }
}

Saiki ayo nambah metode menyang Pointkelas sing bakal nampilake informasi babagan obyek kasebut:

public class Point
{
   public int x;
   public int y;
   public int color;
   public void print()
   {
     System.out.println("Color of (" + x + ", " + y + ") = " + color);
   }
}

Saiki Solutionkelas katon kaya iki:

class Solution
{
   public static void printPoints(Point[] points)
   {
     for (int i = 0; i < points.length; i++)
       points[i].print();
   }

   public static void main(String[] args)
   {
     Point[] data = new Point[100];
     for (int i = 0; i < data.length; i++)
       data[i] = new Point();
     printPoints(data);
   }
}

We skillfully ndhelikake koordinat titik lan informasi werna nang Pointkelas bebarengan karo cara sing nuduhake negara titik.

Kelas minangka cara kanggo ngatur kerumitan program. Program gedhe dadi kurang kompleks nalika dipérang dadi pirang-pirang kelas cilik.


4. Obyek sing bisa diganti vs sing ora bisa diganti

Biyen, kita sinau konstanta ing Jawa lan entuk kesimpulan sing ora nyenengake. Konstanta ngidini sampeyan nglindhungi variabel supaya ora diganti, nanging ora bisa nyegah owah-owahan ing obyek sing dirujuk.

Kanggo ngatasi masalah iki, Jawa teka karo obyek konstan. Utawa, kaya sing luwih kerep diarani, obyek sing ora bisa diganti.

Miturut cara, sampeyan wis ngerti kelas kasebut, sing obyek ora bisa diganti: String. Sawijining Stringobyek tetep ora owah salawas-lawase sawise digawe. Lan kepiye para pangripta Jawa bisa nggayuh iki?

Kaping pisanan, kabeh variabel kelas Stringdidhelikake, yaiku diumumake private.

Kapindho, sampeyan ora bisa oleh warisan Stringkelas: deklarasi kelas kalebu finalmodifier.

Katelu, lan sing paling menarik, kabeh metode kelas String, sing, ing teori, sampeyan bakal ngarepake ngganti obyek sing wis ana, ora bener ngganti, nanging ngasilake sing anyar.

Contone, toUpperCase()cara nggawe kabeh huruf ing senar gedhe. Nanging tinimbang ngganti obyek sing diarani metode kasebut, ngasilake Stringobyek anyar sing kasusun saka huruf kapital:

String text = "This is a very important message";
String message = text.toUpperCase();

Iki sing bakal ana ing memori sawise nglakokake kode iki:

Obyek sing bisa diganti vs sing ora bisa diganti

Dadi bebas ngirim senar sampeyan menyang cara apa wae: ora ana sing bakal ngganti.