Konstruktor
Diperkenalkan| English | Makna |
|---|---|
| default constructor/dɪˈfɒlt kənˈstrʌktə/ | konstruktor default |
Konstruktur terparameter tidak menyediakan konstruktur tanpa argumen
- Student mendeklarasikan hanya Student(String n). Membuat Student("Ada") baru berfungsi, tetapi new Student() tidak memiliki konstruktur yang cocok.
- Java menyediakan konstruktur default implisit hanya ketika tidak ada yang dideklarasikan. Untuk mengizinkan kedua panggilan, tulis secara eksplisit Student() dan Student(String n).
Mengatur objek baru
- Sebuah konstruktur berjalan ketika sebuah objek dibuat dengan
new, untuk menetapkan keadaannya. Ia memiliki nama yang sama dengan kelas dan tidak memiliki tipe kembali (bahkan bukanvoid). public Student(String n) { name = n; score = 0; }Tugasnya: memberikan nilai awal yang masuk akal bagi objek yang baru saja dibuat.
Parameter konstruktor
- Parameter memungkinkan setiap objek baru dimulai dengan nilainya sendiri.
new Student("Ada")meneruskan"Ada"ke parameterndari konstruktor. - Di dalamnya,
name = n;menyalin argumen ke dalam variabel instance. Setiap ekspresinewyang berhasil membuat objek yang berbeda, bahkan jika argumennya identik. Argumen yang berbeda tidak harus menghasilkan nilai bidang yang berbeda jika konstruktor mengabaikannya atau menormalisasinya.
Dua eksekusi new Student("Ada") merujuk ke objek yang sama karena argumennya setara.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Setiap ekspresi baru yang berhasil membuat objek yang berbeda; argumen yang sama tidak membuat referensi menjadi sama.
Pemuatan ulang konstruktor
- Sebuah kelas dapat memiliki beberapa konstruktor dengan daftar parameter yang berbeda—pemuatan ulang.
Student(String n)danStudent(String n, int s)keduanya valid. - Java memilih yang parameternya cocok dengan argumen
newAnda. Ini menawarkan cara fleksibel bagi pemanggil untuk membangun objek.
Konstruktor menetapkan keadaan awal
Setiap objek baru dikonfigurasi oleh argumen konstruktor.
Sebuah konstruktor memiliki...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Nama yang sama dengan kelas, tidak ada tipe kembalian — bahkan tidak void.
Kapan sebuah konstruktor dijalankan?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
new memanggil konstruktor untuk membangun objek.
Jika Anda menulis tidak ada konstruktor, Java menyediakan konstruktor default tanpa argumen.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Tapi menulis konstruktor apa pun menghilangkan default gratis itu.
Sekali Anda mendefinisikan konstruktor dengan parameter, new Student() masih bekerja secara otomatis.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Default gratis hilang; tulis konstruktor tanpa argumen jika Anda membutuhkannya.
Menulis dua konstruktor dengan daftar parameter yang berbeda adalah contoh dari...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Nama yang sama, parameter berbeda = overloading.
Konstruktor default
- Jika Anda menulis tanpa konstruktor, Java menyediakan konstruktur default tersembunyi tanpa parameter. Bidang pertama kali memiliki nilai default (
0,false,null); inisialisasi bidang eksplisit kemudian dapat menetapkan nilai awal lainnya. - Namun begitu Anda menulis sesuatu konstruktor, default gratis itu hilang. Jadi jika Anda membutuhkan konstruktor tanpa argumen dan terparameter, tulis keduanya.
Konstruktor memiliki nama kelas dan TIDAK ADA tipe kembalian — menulis void menjadikannya metode biasa, bukan konstruktor. Dan begitu Anda mendefinisikan satu pun konstruktor, Java berhenti memberikan default tanpa argumen gratis; jika Anda masih menginginkan new Student(), Anda harus menulis konstruktor itu sendiri.
Order the steps used to evaluate new Student("Ada").
Difficulty 3/5 · 200 coins + a small bonus on first completion today
The supplied argument selects a matching constructor; declaring it does not also create a no-argument constructor.
Counter memiliki nilai int pribadi = 7; dan konstruktor eksplisit yang kemudian menetapkan nilai = 9;. Berapakah nilai segera setelah konstruksi?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Inisialisasi bidang menetapkan 7 sebelum badan konstruktor menetapkan 9.
Dua konstruktor untuk Student:
public Student(String n) { name = n; score = 0; }public Student(String n, int s) { name = n; score = s; }new Student("Ada")→ skor0;new Student("Bo", 75)→ skor75.
Terapkan penalaran ke kasus baru
- Bandingkan
class Counter { private int value = 7; }dengan kelas yang identik lainnya di mana konstruktor eksplisit menetapkanvalue = 9;. Yang pertama dimulai pada 7 setelah inisialisasi bidangnya; yang kedua berakhir pada 9 setelah konstruksi. - Bidang menerima nilai default sebelum inisialisasi bidang dan tubuh konstruktor dijalankan. Konstruktor tanpa argumen yang ditulis programmer bukanlah konstruktor default yang disediakan compiler, meskipun keduanya tidak menerima argumen.
Sebuah konstruktor (nama sama dengan kelas, tidak ada tipe kembalian) berjalan pada new untuk menetapkan keadaan awal objek, menggunakan parameter untuk nilai per-objek. Sebuah kelas dapat melakukan pemuatan ulang beberapa konstruktor. Tulis tidak ada konstruktor dan Java menyediakan satu default tanpa argumen — tetapi mendefinisikan konstruktor apa pun menghapus default gratis tersebut.