Kelas dan Objek Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat dua blok asas bahasa pengaturcaraan Java - kelas dan objek. Mereka adalah konsep asas Pengaturcaraan Berorientasi Objek (OOP), yang kami gunakan untuk memodelkan entiti kehidupan nyata.

Dalam OOP, kelas adalah cetak biru atau templat untuk objek. Kami menggunakannya untuk menerangkan jenis entiti.

Sebaliknya, objek adalah makhluk hidup, yang dibuat dari kelas. Mereka mengandungi keadaan tertentu dalam bidangnya dan menunjukkan tingkah laku tertentu dengan kaedahnya.

2. Kelas

Ringkasnya, kelas mewakili definisi atau jenis objek. Di Jawa, kelas dapat berisi bidang, konstruktor, dan kaedah.

Mari lihat contoh menggunakan kelas Java sederhana yang mewakili Kereta :

class Car { // fields String type; String model; String color; int speed; // constructor Car(String type, String model, String color) { this.type = type; this.model = model; this.color = color; } // methods int increaseSpeed(int increment) { this.speed = this.speed + increment; return this.speed; } // ... } 

Kelas Java ini mewakili kereta secara umum. Kami boleh membuat sebarang jenis kereta dari kelas ini. Kami menggunakan medan untuk menahan keadaan dan konstruktor untuk membuat objek dari kelas ini.

Setiap kelas Java mempunyai konstruktor kosong secara lalai. Kami menggunakannya jika kami tidak memberikan pelaksanaan tertentu seperti yang kami lakukan di atas. Inilah cara konstruktor lalai mencari kelas Kereta kami :

Car(){} 

Pembina ini hanya menginisialisasi semua bidang objek dengan nilai lalai mereka. Rentetan dimulakan menjadi nol dan bilangan bulat menjadi sifar.

Sekarang, kelas kami mempunyai konstruktor tertentu kerana kami mahu objek kami menentukan bidangnya semasa kami membuatnya:

Car(String type, String model) { // ... } 

Ringkasnya, kami menulis kelas yang menentukan kereta. Sifatnya dijelaskan oleh bidang, yang mengandungi keadaan objek kelas, dan tingkah lakunya dijelaskan menggunakan kaedah.

3. Objek

Walaupun kelas diterjemahkan semasa waktu kompilasi, objek dibuat dari kelas pada waktu runtime .

Objek kelas disebut contoh, dan kami membuatnya dan menginisialisasi dengan konstruktor:

Car focus = new Car("Ford", "Focus", "red"); Car auris = new Car("Toyota", "Auris", "blue"); Car golf = new Car("Volkswagen", "Golf", "green"); 

Sekarang, kami telah membuat objek Kereta yang berbeza , semuanya dari satu kelas. Ini adalah titik untuk semuanya, untuk menentukan cetak biru di satu tempat, dan kemudian, untuk menggunakannya semula berkali-kali di banyak tempat.

Setakat ini, kami mempunyai tiga objek Kereta , dan semuanya diparkir kerana kelajuannya adalah sifar. Kami boleh mengubahnya dengan menggunakan kaedah peningkatanSpeed kami :

focus.increaseSpeed(10); auris.increaseSpeed(20); golf.increaseSpeed(30); 

Sekarang, kami telah mengubah keadaan kereta kami - semuanya bergerak dengan kelajuan yang berbeza.

Tambahan pula, kita boleh dan harus menentukan kawalan akses ke kelas kita, pembangunnya, bidangnya, dan kaedahnya. Kita boleh melakukannya dengan menggunakan pengubah akses, seperti yang akan kita lihat di bahagian seterusnya.

4. Pengubah Akses

Dalam contoh sebelumnya, kami menghilangkan pengubah akses untuk mempermudah kod. Dengan berbuat demikian, kami sebenarnya menggunakan pengubah paket-peribadi lalai. Pengubah itu membenarkan akses ke kelas dari kelas lain dalam pakej yang sama.

Biasanya, kami menggunakan pengubah umum untuk pembina untuk membenarkan akses dari semua objek lain:

public Car(String type, String model, String color) { // ... } 

Setiap bidang dan kaedah di kelas kami juga harus menentukan kawalan akses oleh pengubah tertentu. Kelas biasanya mempunyai awam pengubah, tetapi kita cenderung untuk menyimpan bidang kita peribadi .

Medan menahan keadaan objek kami, oleh itu kami mahu mengawal akses ke keadaan tersebut. Kami dapat menyimpan sebahagian daripadanya sebagai rahsia , dan yang lain menjadi umum . Kami mencapainya dengan kaedah khusus yang disebut getter dan setter.

Mari lihat kelas kami dengan kawalan akses yang ditentukan sepenuhnya:

public class Car { private String type; // ... public Car(String type, String model, String color) { // ... } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getSpeed() { return speed; } // ... } 

Kelas kami ditandai untuk umum , yang bermaksud kami boleh menggunakannya dalam pakej apa pun. Juga, konstruktor adalah umum , yang bermaksud kita boleh membuat objek dari kelas ini di dalam objek lain.

Bidang kami ditandai sebagai peribadi , yang bermaksud mereka tidak dapat diakses dari objek kami secara langsung , tetapi kami menyediakan akses kepada mereka melalui pengawal dan pengatur.

Yang jenis dan model bidang tidak mempunyai getters dan penetap, kerana mereka memegang data dalaman objek kami. Kita dapat menentukannya hanya melalui konstruktor semasa permulaan.

Selanjutnya, warna dapat diakses dan diubah, sedangkan kecepatan hanya dapat diakses, tetapi tidak diubah. Kami melaksanakan penyesuaian kelajuan melalui kaedah awam khusus meningkatkan Kecepatan () dan penurunan Kecepatan () .

Dengan kata lain, kami menggunakan kawalan akses untuk merangkumi keadaan objek.

5. Kesimpulan

Dalam artikel ini, kami membahas dua elemen dasar bahasa Java, kelas, dan objek, dan menunjukkan bagaimana dan mengapa ia digunakan. Kami juga memperkenalkan asas-asas kawalan akses dan menunjukkan penggunaannya.

Untuk mempelajari konsep bahasa Java yang lain, kami mencadangkan membaca mengenai warisan, kata kunci super, dan kelas abstrak sebagai langkah seterusnya.

Kod sumber lengkap untuk contoh boleh didapati di GitHub.