1. Membuat objek
Nah, kita sudah sampai pada membuat objek. Anda sudah menemukan ini sebelumnya, tetapi sekarang kami akan menganalisis topik ini lebih terinci. Sebenarnya sangat mudah untuk membuat objek.
Untuk membuat objek, Anda perlu menggunakan operator baru . Membuat objek terlihat seperti ini:
new Class(arguments)
Setelah membuat objek, kami paling sering segera menyimpan referensi ke dalam variabel, yang sering kali memiliki tipe yang sama dengan objek yang dibuat. Itu artinya saat membuat objek, Anda biasanya melihat kode seperti ini:
Class name = new Class(arguments)
Di mana pembuatan variabel baru, dan kode di sebelah kanan tanda sama dengan adalah pembuatan objek baru yang bertipe .Class name
Class
Contoh:
Kode | Catatan |
---|---|
|
Buat Object objek |
|
Buat Cat objek |
|
Buat Scanner objek |
Pemrogram sering memberi nama variabel setelah kelasnya, tetapi dengan huruf kecil. Untuk programmer pemula, kode seperti itu bisa membingungkan:
Kode |
---|
|
|
|
Tidak ada yang salah dengan kode ini — ini adalah kode yang paling umum, di mana sebuah variabel dibuat dan kemudian segera diinisialisasi oleh objek dengan tipe yang sama.
Di sebelah kiri tanda sama dengan kita memiliki pembuatan variabel. Ke kanan, pembuatan objek. Itu dia.
2. Pembangun
Anda mungkin pernah melihat bahwa beberapa argumen sering diteruskan saat membuat objek. Terlebih lagi, argumen diteruskan untuk beberapa objek, tetapi tidak untuk yang lain. Bagaimana seluruh mekanisme dengan argumen ini bekerja?
Semuanya juga sederhana di sini: setiap kelas memiliki metode (atau metode) khusus yang bertanggung jawab untuk menangani argumen yang diteruskan saat membuat objek. Metode ini disebut konstruktor . Atau ketika kita berbicara tentang hanya satu: konstruktor .
Membedakan metode konstruktor dari metode biasa itu mudah. Metode ini memiliki dua fitur yang membedakan:
- nama konstruktor sama dengan nama kelasnya (dan dimulai dengan huruf kapital)
- konstruktor tidak memiliki tipe pengembalian.
Secara umum, seperti inilah tampilannya:
modifiers Class(arguments)
{
Code
}
Contoh:
Kode | Catatan |
---|---|
|
Point Point konstruktor kelas kelas |
|
Membuat objek kelas Point . Konstruktor kelas akan dipanggil. |
Perhatikan seperti apa konstruktornya: ia tidak memiliki tipe kembalian dan namanya sama dengan nama kelas.
Dan satu hal lagi: lihat kode di dalam konstruktor. Parameter konstruktor memiliki nama yang sama dengan bidang kelas: x dan y. Ini adalah praktik standar untuk menghindari membuat nama parameter baru. Namanya sama dengan bidang kelas. Konflik nama diselesaikan dengan menggunakan kata kunci ini.
3. Memanggil konstruktor
Saat menggunakan operator baru dan perintah seperti " Kelas baru ( argumen )" untuk membuat objek baru, dua hal terjadi:
- Mesin Java membuat objek yang bertipe Class
- Mesin Java memanggil konstruktor objek dan meneruskan argumen Anda
Sebagai seorang programmer, Anda harus memutuskan konstruktor apa yang harus dimiliki kelas Anda, dan parameter apa yang harus dimiliki konstruktor ini.
Misalkan Anda memutuskan untuk membuat kelas untuk melacak kucing di penampungan hewan. Maka Cat
kelas Anda mungkin terlihat seperti ini:
|
|
|
Ini diperbolehkan |
|
Tapi ini tidak diperbolehkan. Kode ini tidak dapat dikompilasi. |
|
Dan ini tidak diperbolehkan. Kode ini tidak akan dikompilasi. |
Kelas Cat
hanya memiliki satu konstruktor dengan parameter nama dan umur. Karena tidak ada konstruktor lain, Anda harus meneruskan nama kucing ( name
) dan umur ( age
) sebagai argumen saat membuat objek. Melewati argumen ke konstruktor bukanlah pilihan .
4. Beberapa konstruktor
Tapi jika perlu, Anda bisa menambahkan beberapa konstruktor ke kelas. Tidak ada batasan jumlah konstruktor atau parameternya. Saat Anda membuat objek, kompiler secara otomatis memilih konstruktor yang cocok dengan parameternya
Kode | Catatan |
---|---|
|
|
|
Ini diperbolehkan: konstruktor pertama akan dipanggil |
|
Ini diperbolehkan: konstruktor kedua akan dipanggil |
|
Tapi ini tidak diperbolehkan. Kode ini tidak dapat dikompilasi. |
Kami memutuskan untuk memperhitungkan fakta bahwa usia kucing mungkin tidak diketahui. Untuk menangani kasus ini, kami menambahkan konstanta khusus UNKNOWN
bersama dengan konstruktor yang hanya memiliki satu parameter — nama kucing.
Perhatikan bahwa kami masih menginisialisasi kedua variabel di dalam kedua konstruktor. Kami mengganti parameter yang tidak diketahui/hilang dengan konstanta UNKNOWN
.
Jika tidak ada nilai yang diberikan ke variabel usia, maka nilai defaultnya adalah 0. Lagi pula, anak kucing yang ditemukan di jalan mungkin berusia 0 tahun penuh. Itu berarti nol pada variabel usia tidak berarti "usia tidak diketahui".
5. Konstruktor bawaan
Jika Anda ingin objek Anda dibuat tanpa parameter apa pun, kelas Anda perlu mendeklarasikan konstruktor tanpa argumen.
Konstruktor tanpa parameter belum tentu merupakan konstruktor tanpa kode. Konstruktor seperti itu dapat berisi kode yang menginisialisasi variabel dengan nilai awal:
Kode | Catatan |
---|---|
|
|
|
Ini diperbolehkan: konstruktor pertama akan dipanggil |
|
Ini diperbolehkan: konstruktor kedua akan dipanggil |
Konstruktor default
Ada poin yang sangat penting yang harus Anda ketahui dan ingat.
Jika kelas Anda mendeklarasikan bukan satu konstruktor , kompiler akan menambahkan konstruktor default, yang merupakan konstruktor tanpa argumen dengan pengubah publik.
Tetapi jika kelas Anda mendeklarasikan bahkan satu constructor , maka tidak ada konstruktor default yang akan ditambahkan dan Anda harus menambahkannya sendiri jika Anda menginginkannya.
Kode | Catatan |
---|---|
|
|
|
Ini diperbolehkan: konstruktor default akan dipanggil |
GO TO FULL VERSION