1. Objek
Segala-galanya di Jawa adalah objek.
Lebih tepat lagi, terdapat sangat sedikit perkara di Jawa yang bukan objek. Contohnya, jenis primitif. Tetapi ini adalah pengecualian yang agak jarang berlaku kepada peraturan.
Jadi apakah objek?
Objek ialah entiti yang mengumpulkan data bersama dengan kaedah yang memproses data . Apabila kami menyebut "data", kami maksudkan pembolehubah, sudah tentu.
Pembolehubah objek dipanggil "data" atau "keadaan".
Kaedah sesuatu objek dikatakan sebagai "kelakuan". Adalah menjadi kebiasaan untuk menukar keadaan objek (pembolehubah) hanya menggunakan kaedah objek itu. Menukar pembolehubah objek secara langsung (tidak menggunakan kaedahnya) dianggap sebagai bentuk buruk.
Setiap objek , serta setiap pembolehubah, mempunyai jenis . Jenis ini ditentukan sekali apabila objek dicipta dan tidak boleh diubah pada masa hadapan. Jenis objek ialah kelasnya.
Setiap objek mempunyai salinan pembolehubah contoh sendiri (medan). Jika pembolehubah int bukan statik diisytiharkan dalam kelas, dan program anda mencipta 10 objek kelas itu, maka setiap objek akan mempunyai pembolehubah int sendiri.
Berinteraksi dengan objek
Cara paling mudah untuk bekerja dengan objek ialah menyimpan rujukan kepadanya dalam pembolehubah, dan kemudian memanggil kaedah pada pembolehubah itu. Ini akan kelihatan biasa kepada anda:
variable.method()
Di manakah variable
pembolehubah yang menyimpan rujukan kepada objek, dan method
merupakan kaedah kelas itu.
Jika anda ingin merujuk kepada medan (pembolehubah) objek, maka anda juga perlu menggunakan pengendali titik :
variable.field
Di manakah variable
pembolehubah yang menyimpan rujukan kepada objek, dan field
merupakan pembolehubah contoh (medan).
2. new
pengendali
Untuk mencipta objek kelas tertentu, anda perlu menggunakan new
operator. Secara umum, inilah rupa untuk mencipta objek:
Class variable = new Class(arguments);
Di manakah Class
nama kelas pembolehubah variable
serta nama kelas objek yang akan dibuat. Dan variable
merupakan pembolehubah yang menyimpan rujukan kepada objek yang dibuat. Dan arguments
ialah pemegang tempat untuk senarai dalil yang dibatasi koma yang diserahkan kepada pembina.
Senarai khusus hujah yang boleh diluluskan diputuskan oleh pengaturcara yang menulis kelas.
Anda telah mencipta objek sebelum ini dan juga menggunakan binaan khusus ini. Anda tidak lupa, saya harap?
Scanner console = new Scanner(System.in);
int x = console.nextInt();
Scanner console
— ini mencipta console
pembolehubah yang jenisnya ialah Scanner
. — ini mencipta objek baharu . Dan pengendali tugasan menetapkan pembolehubah sama dengan rujukan kepada objek yang baru dibuat.new Scanner(System.in)
Scanner
console
Dalam baris kedua, kami memanggil nextInt()
kaedah pada Scanner
objek, menggunakan console
pembolehubah, yang menyimpan rujukan kepada Scanner
objek.
Contoh penciptaan objek:
Kod | Penerangan |
---|---|
|
Buat String objek |
|
Buat Scanner objek |
|
Cipta satu int[] : bekas 10 int unsur |
Objek yang dicipta dipanggil objek kelas atau kejadian kelas , manakala kelas dipanggil kelas objek . Sebagai contoh, s
pembolehubah menyimpan rujukan kepada contoh kelas String
.
3. Memperkenalkan kelas
Saya fikir anda telah melihat betapa mudahnya menggunakan kelas yang ditulis oleh pengaturcara lain. Tetapi bagaimana dengan menulis kelas anda sendiri?
Bagaimana anda tahu bila dan di mana anda memerlukan kelas anda sendiri dan bagaimana untuk membuatnya?
Pengaturcara biasanya membuat kelas mereka sendiri apabila mereka ingin membawa entiti baharu ke dalam program. Adakah bunyi itu mengelirukan? Kemudian saya akan cuba menerangkan, tetapi saya akan mulakan dari jauh.
Kumpulan data
Memudahkan sedikit, kita boleh mengatakan bahawa objek dalam Java ialah blok memori yang mengandungi pembolehubah yang diisytiharkan dalam kelas (medan contoh). Atau, dengan kata lain, pembolehubah digabungkan menjadi satu kumpulan.
Katakan program anda perlu menyimpan koordinat 100
titik dan memerlukan kaedah untuk memaparkannya pada skrin. Ini boleh dilakukan menggunakan tatasusunan. Sebagai contoh, seperti ini:
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);
}
}
Ia akan menjadi lebih mudah jika kita mempunyai satu jenis untuk menyimpan semua maklumat tentang titik: x
, y
, color
. Jika jenis sedemikian tidak wujud di Jawa, anda boleh menciptanya sendiri.
Untuk melakukan ini, kami akan menulis kod untuk Point
kelas:
public class Point
{
public int x;
public int y;
public int color;
}
Kini kod di atas boleh ditulis semula sebagai:
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);
}
}
Sekarang mari tambah kaedah ke Point
kelas yang akan memaparkan maklumat tentang objek:
public class Point
{
public int x;
public int y;
public int color;
public void print()
{
System.out.println("Color of (" + x + ", " + y + ") = " + color);
}
}
Sekarang Solution
kelas kelihatan seperti ini:
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);
}
}
Kami dengan mahir menyembunyikan koordinat titik dan maklumat warna di dalam Point
kelas bersama-sama dengan kaedah yang memaparkan keadaan titik.
Kelas ialah cara untuk mengurus kerumitan program. Program yang besar menjadi kurang kompleks apabila ia dipecahkan kepada banyak kelas kecil.
4. Boleh berubah vs objek tidak berubah
Pada suatu masa dahulu, kami mempelajari pemalar di Jawa dan membuat kesimpulan yang tidak begitu menggembirakan. Pemalar membolehkan anda melindungi pembolehubah daripada diubah, tetapi ia tidak boleh menghalang perubahan pada objek yang dirujuknya.
Untuk menyelesaikan masalah ini, Java menghasilkan objek tetap. Atau, seperti yang lebih kerap dipanggil, objek tidak berubah.
Dengan cara ini, anda sudah mengetahui kelas sedemikian, yang objeknya tidak boleh diubah: String
. Objek String
kekal selama-lamanya tidak berubah selepas ia dicipta. Dan bagaimanakah pencipta Java mencapai ini?
Pertama, semua pembolehubah kelas String
disembunyikan, iaitu diisytiharkan private
.
Kedua, anda tidak boleh mewarisi String
kelas: pengisytiharan kelasnya termasuk final
pengubah suai.
Ketiga, dan yang paling menarik, semua kaedah kelas String
, yang, secara teori, anda harapkan untuk menukar objek sedia ada, sebenarnya tidak mengubahnya, tetapi sebaliknya mengembalikan yang baru.
Sebagai contoh, toUpperCase()
kaedah membuat semua huruf dalam rentetan huruf besar. Tetapi bukannya menukar objek yang kaedah dipanggil, ia mengembalikan String
objek baharu yang terdiri daripada huruf besar:
String text = "This is a very important message";
String message = text.toUpperCase();
Inilah yang akan ada dalam ingatan selepas melaksanakan kod ini:
Jadi jangan ragu untuk menghantar rentetan anda kepada mana-mana kaedah: tiada siapa yang akan mengubahnya.
GO TO FULL VERSION