1. Mencipta objek
Nah, kami telah tiba di mencipta objek. Anda telah pun mengalami perkara ini sebelum ini, tetapi kini kami akan menganalisis topik ini dengan lebih terperinci. Ia sebenarnya sangat mudah untuk mencipta objek.
Untuk mencipta objek, anda perlu menggunakan operator baharu . Mencipta objek kelihatan lebih kurang seperti ini:
new Class(arguments)
Selepas mencipta objek, kami selalunya menyimpan rujukan kepadanya dengan segera dalam pembolehubah, yang selalunya berkongsi jenis yang sama dengan objek yang dicipta. Ini bermakna apabila membuat objek, anda biasanya melihat kod seperti ini:
Class name = new Class(arguments)
Di manakah penciptaan pembolehubah baru, dan kod di sebelah kanan tanda sama ialah penciptaan objek baru yang jenisnya ialah .Class name
Class
Contoh:
Kod | Catatan |
---|---|
|
Buat Object objek |
|
Buat Cat objek |
|
Buat Scanner objek |
Pengaturcara sering menamakan pembolehubah selepas kelas mereka, tetapi dengan huruf kecil. Untuk pengaturcara baru, kod sedemikian boleh mengelirukan:
Kod |
---|
|
|
|
Tidak ada yang salah dengan kod ini — ini adalah kod yang paling biasa, di mana pembolehubah dicipta dan kemudian segera dimulakan oleh objek jenis yang sama.
Di sebelah kiri tanda sama kita mempunyai penciptaan pembolehubah. Di sebelah kanan, penciptaan objek. Itu sahaja.
2. Pembina
Anda mungkin telah melihat bahawa beberapa hujah sering diluluskan semasa membuat objek. Lebih-lebih lagi, hujah diluluskan untuk beberapa objek, tetapi bukan yang lain. Bagaimanakah keseluruhan mekanisme dengan hujah ini berfungsi?
Semuanya mudah di sini juga: setiap kelas mempunyai kaedah (atau kaedah) khas yang bertanggungjawab untuk mengendalikan hujah yang diluluskan semasa mencipta objek. Kaedah ini dipanggil pembina . Atau apabila kita bercakap tentang hanya satu: the constructor .
Membezakan kaedah pembina daripada kaedah biasa adalah mudah. Kaedah ini mempunyai dua ciri yang membezakan:
- nama pembina adalah sama dengan nama kelasnya (dan bermula dengan huruf besar)
- pembina tidak mempunyai jenis pulangan.
Secara umum, inilah yang biasanya kelihatan seperti:
modifiers Class(arguments)
{
Code
}
Contoh:
Kod | Catatan |
---|---|
|
Point Point pembina kelas kelas |
|
Buat objek kelas Point . Pembina kelas akan dipanggil. |
Perhatikan rupa pembina: ia tidak mempunyai jenis pulangan dan namanya sama dengan nama kelas.
Dan satu lagi perkara: lihat kod di dalam pembina. Parameter pembina mempunyai nama yang sama dengan medan kelas: x dan y. Ia adalah amalan standard untuk mengelakkan membuat nama parameter baru. Nama-nama adalah sama dengan medan kelas. Konflik nama diselesaikan menggunakan kata kunci ini.
3. Memanggil pembina
Apabila menggunakan pengendali baharu dan arahan seperti " Kelas baharu ( argumen )" untuk mencipta objek baharu, dua perkara berlaku:
- Mesin Java mencipta objek yang jenisnya ialah Kelas
- Mesin Java memanggil pembina objek dan menghantar hujah anda
Sebagai seorang pengaturcara, anda boleh memutuskan pembina yang sepatutnya ada pada kelas anda, dan parameter yang sepatutnya ada pada pembina ini.
Katakan anda memutuskan untuk membuat kelas untuk menjejaki kucing di tempat perlindungan haiwan. Kemudian Cat
kelas anda mungkin kelihatan seperti ini:
|
|
|
Ini dibenarkan |
|
Tetapi ini tidak dibenarkan Kod ini tidak akan disusun. |
|
Dan ini tidak dibenarkan. Kod ini tidak akan disusun. |
Kelas ini Cat
hanya mempunyai satu pembina dengan nama dan parameter umur. Oleh kerana tiada pembina lain, anda mesti memberikan nama kucing ( name
) dan umur ( age
) sebagai hujah semasa mencipta objek. Menghantar hujah kepada pembina bukan pilihan .
4. Pembina berbilang
Tetapi jika anda perlu, anda boleh menambah berbilang pembina ke kelas. Tiada had pada bilangan pembina atau parameter mereka. Apabila anda mencipta objek, pengkompil secara automatik memilih pembina yang sepadan dengan parameter
Kod | Catatan |
---|---|
|
|
|
Ini dibenarkan: pembina pertama akan dipanggil |
|
Ini dibenarkan: pembina kedua akan dipanggil |
|
Tetapi ini tidak dibenarkan Kod ini tidak akan disusun. |
Kami memutuskan untuk mengambil kira hakikat bahawa umur kucing mungkin tidak diketahui. Untuk mengendalikan kes ini, kami menambah pemalar khas UNKNOWN
bersama-sama dengan pembina yang mempunyai hanya satu parameter - nama kucing.
Ambil perhatian bahawa kami masih memulakan kedua-dua pembolehubah di dalam kedua-dua pembina. Kami menggantikan parameter yang tidak diketahui/hilang dengan pemalar UNKNOWN
.
Jika tiada nilai diberikan kepada pembolehubah umur, maka ia akan mempunyai nilai lalai 0. Lagipun, anak kucing yang ditemui di jalanan mungkin 0 tahun penuh. Ini bermakna sifar dalam pembolehubah umur tidak semestinya bermaksud "umur tidak diketahui".
5. Pembina lalai
Jika anda mahu objek anda dijadikan instantiated tanpa sebarang parameter, kelas anda perlu mengisytiharkan pembina tanpa hujah.
Pembina tanpa parameter tidak semestinya pembina tanpa kod. Pembina sedemikian boleh mengandungi kod yang memulakan pembolehubah dengan nilai permulaan:
Kod | Catatan |
---|---|
|
|
|
Ini dibenarkan: pembina pertama akan dipanggil |
|
Ini dibenarkan: pembina kedua akan dipanggil |
Pembina lalai
Terdapat satu perkara yang sangat penting yang perlu anda ketahui dan ingat.
Jika kelas anda mengisytiharkan bukan satu constructor , pengkompil akan menambah pembina lalai, yang merupakan pembina tanpa hujah dengan pengubah suai awam.
Tetapi jika kelas anda mengisytiharkan walaupun satu constructor , maka tiada constructor lalai akan ditambah dan anda perlu menambahnya sendiri jika anda mahukannya.
Kod | Catatan |
---|---|
|
|
|
Ini dibenarkan: pembina lalai akan dipanggil |
GO TO FULL VERSION