Metode: Cara Menulisnya
Diperkenalkan| English | Makna |
|---|---|
| accessor/əkˈsesə/ | aksesor |
| mutator/mjuːˈteɪtə/ | mutator |
Pembaruan yang ditolak meninggalkan keadaan sebelumnya tetap utuh
- Skor dimulai dari 20. setScore(s) hanya menetapkan jika s >= 0; pemanggilan setScore(-5) menyisakan skor pada 20.
- Pengaman mencegah pembaruan yang tidak valid. getScore() selanjutnya mengembalikan keadaan yang sudah ada daripada argumen yang ditolak.
Menulis sebuah metode
- Sebuah method memiliki header dan body. Header:
public void addScore(int s)— akses, tipe return, nama, parameter. - Body: pernyataan-pernyataan di dalam
{ }yang melakukan pekerjaan. Method dapat membaca dan mengubah variabel instance objek.
Nilai kembalian
- Tipe return sebuah method mengatakan apa yang dikembalikan; gunakan
return value;untuk mengirimkannya.public int getScore() { return score; }mengembalikan skor saat ini. - A
voidmethod mengembalikan tidak ada — ia hanya mengerjakan tugasnya (misalnya mencetak). Nilai yang dikembalikan harus kompatibel dengan tipe return yang dideklarasikan; misalnya, nilaiintdapat diperluas dan dikembalikan oleh methoddouble.
Metode public double result() { return 3; } dapat dikompilasi meskipun 3 adalah literal int.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Java memperluas hasil int menjadi double; nilai yang dikembalikan harus kompatibel, tidak perlu ditulis dengan tipe yang identik.
Aksesor dan mutator
- Accessor (getter) mengembalikan informasi tanpa mengubah objek:
getScore(). Mutator (setter) mengubah state objek:addScore(s)atausetName(n). - Getter biasanya mengembalikan
int/String; setter biasanya mengembalikanvoid. Bersama-sama mereka membentuk antarmuka publik objek atas data privatnya.
Aksesor mengembalikan nilai
Dimulai dari skor 20, setScore(-5) menolak pembaruan; getScore mengembalikan 20.
Metode yang mengembalikan informasi tanpa mengubah objek adalah sebuah...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Aksesor membaca dan mengembalikan; mutator mengubah keadaan.
Metode void...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
void = tidak ada nilai kembalian; itu hanya melakukan suatu tindakan.
A non-void method may reach its closing brace and complete normally without returning a value.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
A path completing normally must return a compatible value. A path that throws an exception is a different case.
Metode manakah yang dapat memvalidasi inputnya sebelum mengubah keadaan?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Setter dapat memeriksa (mis. menolak negatif) sebelum mengonversi.
Menulis nilai kembalian; di dalam metode void kompilasi berjalan lancar.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Metode void tidak bisa mengembalikan nilai — itu tidak akan kompilasi.
Metode dapat memvalidasi
- Karena kode eksternal melewati metode, sebuah metode dapat memeriksa sebelum bertindak.
public void setScore(int s) { if (s >= 0) score = s; }menolak skor negatif. - Akses privat mencegah kode yang tidak terkait langsung mengonversi field. Constructor dan setiap method kelas yang menulisnya harus tetap mempertahankan aturan yang dimaksud; setter yang dijaga tidak dapat memperbaiki skor awal yang tidak valid secara mandiri.
A method non-void harus mengembalikan nilai yang kompatibel pada setiap jalur yang selesai normal. Sebuah jalur dapat instead melempar exception. Jika method int mencapai akhirnya tanpa mengembalikan, kompilasi gagal. Method void tidak mengembalikan apa pun, jadi return; (atau tidak ada return) adalah benar di sana; menulis return value; dalam method void tidak akan terkompile.
For the stated guarded setter, what does getScore() return after setScore(-5)?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
The condition fails, so no assignment occurs and the old score remains 20.
Dimulai dari skor 20, replaceScore(30) menyimpan skor lama, menetapkan 30, lalu mengembalikan skor lama. Nilai berapakah yang dikembalikan oleh pemanggilan ini?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Skor lama yang dikembalikan adalah 20; skor baru yang disimpan adalah 30. Mengembalikan sebuah nilai tidak mencegah mutasi.
Sebuah aksesor dan mutator:
- Aksesor:
public int getScore() { return score; }— membaca, mengembalikanint. - Mutator:
public void addScore(int s) { score += s; }— mengubah state, tidak mengembalikan apa pun. student.addScore(10); int now = student.getScore();
Terapkan penalaran ke kasus baru
- Pertimbangkan
public int replaceScore(int s) { int old = score; score = s; return old; }. Ini adalah mutator meskipun mengembalikan nilai: dimulai dari 20, replaceScore(30) mengembalikan 20 dan meninggalkan skor pada 30. - Hukumskan perilaku daripada nama atau tipe return. Method yang disebut getScore yang menambah skor bukan accessor murni, dan method void yang hanya mencetak pesan tidak perlu memutasi objek.
Sebuah method memiliki header (akses, tipe return, nama, parameter) dan body. Method non-void harus return nilai yang kompatibel dengan assignment pada setiap jalur yang selesai normal; method void tidak mengembalikan apa pun. Accessors (getters) mengembalikan state tanpa mengubahnya; mutators (setters) mengubah state dan dapat validasi nilai baru.