public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
Tiada apa-apa yang rumit di sini: kaedah Java yang tugasnya adalah untuk menjana rentetan ucapan dengan nama yang kami berikan kepadanya. Seperti contohnya - Hello world! My name is Bobby
Mari kita fahami pembinaan kaedah dengan betul dengan melihat setiap kata kunci dalam pengisytiharan kaedah (dari kiri ke kanan). Kata kunci pertama kami ialah public
, dan ia menandakan pengubah suai akses:
Pengubah suai akses
Mereka menunjukkan skop penglihatan yang dibenarkan untuk ahli kelas, iaitu, sekatan tempat di mana pembolehubah atau kaedah dibenarkan untuk digunakan. Pengubah suai akses berikut digunakan dalam Java:-
awam : awam. Kaedah atau medan dengan pengubah suai ini adalah awam, boleh dilihat oleh kelas lain (atau sebaliknya, kaedah dan medannya) daripada pakej semasa dan daripada pakej luaran. Ini ialah tahap capaian paling luas yang diketahui;
-
protected : kaedah atau pembolehubah dengan pengubah suai ini boleh diakses dari mana-mana sahaja dalam kelas atau pakej semasa, atau dalam kelas yang mewarisi yang ini, serta kaedah atau medan, walaupun ia berada dalam pakej lain
protected String constructHelloSentence(String name) {...}
-
Pengubah suai lalai. Jika medan atau kaedah kelas tidak mempunyai pengubah, pengubah lalai digunakan. Dalam kes ini, medan atau kaedah kelihatan kepada semua kelas dalam pakej semasa (seperti protected , tetapi tanpa keterlihatan semasa mewarisi).
String constructHelloSentence(String name) {...}
-
swasta : bertentangan dengan pengubah suai awam . Kaedah atau pembolehubah dengan pengubah suai sedemikian hanya tersedia dalam kelas di mana ia diisytiharkan.
private String constructHelloSentence(String name) {...}
String
dalam tandatangan kaedah (baris pertama kaedah yang menerangkan sifatnya).
Nilai pulangan
Nilai pulangan ialah data (sesetengah hasil daripada pelaksanaan kaedah) yang datang menggantikannya selepas panggilan. Setiap kaedah mempunyai nilai pulangan. Atau tidak?Kaedah Nilai Pulangan
Nilai ini boleh menjadi sebarang jenis data: pembolehubah jenis mudah atau jenis rujukan. Dalam contoh ini, kami menunjukkan bahawa kaedah mesti mengembalikan objek jenisString
, yang, seperti yang kita ingat, ialah kelas yang menerangkan rentetan. Perkara kedua di sini ialah perkataan return
. Ia mempunyai hubungan langsung dengan nilai pulangan: nilai selepas ia akan dihantar semula ke tempat kaedah dipanggil, dan kaedah itu sendiri kemudiannya akan return
ditutup. Perkataan ini biasanya muncul dalam baris terakhir kaedah (kecuali kaedah dengan pelbagai cabang seperti if, else..
.). Jika anda menulis kod pada baris seterusnya selepas return
:
private String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
return resultSentence;
System.out.println(resultSentence);
}
maka kita akan mendapat kutukan dari pengkompil, yang tidak begitu baik (pengkompil tidak akan mengesyorkan yang bukan-bukan). Anda juga perlu ingat bahawa jenis data selepas с
mesti sepadan dengan yang diisytiharkan dalam tandatangan kaedah. return
Baca lebih lanjut mengenai di sini .
batal
Untuk apa ia digunakanvoid
di Jawa? Tidak semua kaedah mempunyai nilai pulangan. Sesetengah sama ada tidak mempunyai apa-apa atau tidak perlu memulangkan apa-apa. Apa yang perlu dilakukan kemudian? Kemudian dalam tandatangan kaedah kita tulis void
. Bagaimanakah kaedah kami kelihatan tanpa nilai pulangan?
protected void constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
}
Anda mungkin perasan bahawa bersama-sama dengan nilai pulangan, perkataan return
So it is telah hilang, kerana kaedah kami tidak sepatutnya mengembalikan apa-apa. Walau bagaimanapun, ia boleh diletakkan di sini, tetapi tanpa sebarang makna, hanya return
; dalam baris terakhir. Ini secara amnya tidak berguna, jadi void
ia adalah pilihan dalam kaedah dengan. Walau bagaimanapun, ia boleh digunakan dengan berguna dalam void
kaedah, seperti cawangan atau gelung, di mana anda ingin keluar dari kaedah dengan segera. Seterusnya dalam pengisytiharan kaedah yang kami ada constructHelloSentence
.
Nama kaedah
constructHelloSentence
- nama kaedah, ciri tersendiri yang mana kita boleh membezakan satu atau kaedah lain. Dan, dengan itu, hubungi satu atau kaedah lain. Nama kaedah mesti bermula dengan huruf kecil, tetapi juga menggunakan sarung unta (CamelCase, sarung unta): i.e. Setiap perkataan seterusnya dalam nama itu bersebelahan dengan yang sebelumnya dan ditulis dengan huruf besar. Nama kaedah harus menerangkan kaedah (komen terbaik ialah penamaan yang betul). Untuk melakukan ini, gunakan kata kerja atau gabungan dengan kata kerja: getCat
, delete
, createCar
, dan seterusnya. Dalam satu kelas, nama kaedah mestilah unik (tidak mengira kaedah terlebih beban, yang akan kita bincangkan kemudian). Mari kita lihat lebih lanjut kaedah yang kita analisis dan lihat ( String name
)
Parameter kaedah
Kaedah mungkin (atau mungkin tidak) mempunyai data tertentu yang akan datang dari luar, iaitu dari tempat kaedah itu dipanggil. Dalam kes kami, kami melihat bahawa objek jenisString
dengan nama tiba name
dan kemudian kami menggunakan pembolehubah ini dalam kaedah kami. Anda boleh menggunakan bilangan parameter yang tidak terhad dalam sesuatu kaedah, tetapi lebih daripada 7 tidak disyorkan. Apabila kita tidak mengetahui bilangan elemen yang tepat, tetapi semua elemen ini diperlukan untuk tujuan yang sama dan akan menjadi jenis yang sama (contohnya, String
), elipsis digunakan:
public void constructHelloSentence(String...name) {
...
}
Rayuan kepada setiap elemen adalah seperti ini: name[0]
Adakah ia mengingatkan anda tentang apa-apa? Betul, array! Tiada apa yang akan berubah jika kita menulis:
protected void constructHelloSentence(String[] name) {
...
}
Akses kepada elemen juga akan dalam bentuk: name[1]
Dan satu lagi perkara. Hujah kaedah boleh menjadi muktamad :
public String constructHelloSentence(final String name) {
...
}
Ini bermakna bahawa rujukan nama terikat pada objek tertentu String
dan tidak boleh ditindih. final
Anda boleh membaca tentang bekerja dengan pembolehubah rujukan dan interaksinya dengan perkataan terpelihara dalam bahan " Jenis Data Rujukan di Jawa ".
Kaedah Panggilan
Jadi, kami telah menyelesaikan penciptaan kaedah, sekarang mari kita bercakap tentang menggunakannya. Bagaimana untuk memanggil kaedah di Jawa? Setiap kaedah dalam Java adalah dalam kelas. Untuk memahami cara kaedah panggilan dalam Java berfungsi, mari kita ambil kelas:public class StringConstructor {
public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
}
Memandangkan kaedah kami tidak statik (ini adalah topik yang berasingan untuk perbincangan yang melangkaui skop artikel hari ini), untuk memanggilnya anda mesti mencipta objek dahulu dan kemudian memanggil kaedah padanya:
class Application{
public static void main(String[] args) {
StringConstructor stringConstructor = new StringConstructor();
stringConstructor.constructHelloSentence("Den");
}
}
Dalam hujah kaedah kami, kami lulus rentetan (nama) yang kami mahu lihat dalam rentetan yang terhasil dipaparkan pada skrin:
Hello world! My name is Den
Perlu diingat juga bahawa kaedah boleh digunakan semula seberapa banyak yang kita perlukan - tiada sekatan.
ini
Anda selalunya boleh melihat kata kunci dalam kodthis
, seperti dalam penetap:
public void setValue(Long value) {
this.value = value;
}
Dan apakah maksudnya? this
di Jawa, ini adalah rujukan kepada objek semasa kelas ini. Sebagai contoh, jika kita mencipta objek:
StringConstructor stringConstructor = new StringConstructor();
maka this
di dalam objek stringConstructor
akan ada pautan ke objek yang sama. this
digunakan untuk merujuk kepada pembolehubah objek (seperti dalam penetap di atas) dan untuk memanggil beberapa kaedah. Kita boleh menulis semula kelas kita sedikit:
public class StringConstructor {
public String constructHelloSentence(String name) {
String resultSentence = this.getSentence() + name;
System.out.println(resultSentence);
return resultSentence;
}
private String getSentence() {
return "Hello world! My name is ";
}
}
Melalui this
kami memanggil kaedah objek ini untuk mengambil rentetan yang diperlukan. Tetapi, sebagai peraturan, ini hampir tidak digunakan untuk kaedah, kerana walaupun tanpanya terdapat rujukan kepada kaedah objek tertentu; ia digunakan terutamanya untuk pembolehubah objek.
Kaedah terlebih beban
Katakan kita memerlukan kaedah yang pada dasarnya melakukan logik yang sama, tetapi dalam aHello world
! sebaliknya world
kita ingin memasukkan perkataan kita sendiri (tali). Tetapi kami sudah mempunyai kaedah constructHelloSentence
. Jadi, adakah kita perlu menghasilkan nama baharu untuk kaedah yang pada asasnya melaksanakan fungsi yang sama? Tidak kira bagaimana keadaannya: pada masa ini kaedah lebihan beban membantu kami. Kaedah terlebih beban ialah penggunaan nama kaedah yang sama lebih daripada sekali apabila mengisytiharkannya dalam kelas. Dari sudut pandangan sintaks bahasa, tidak boleh ada dua nama yang sama dalam sesetengah ruang tempatan. Tetapi ia juga mungkin untuk mengisytiharkan kaedah dengan nama yang sama tetapi hujah yang berbeza. Dalam erti kata lain, kelas mengandungi lebihan apabila terdapat dua atau lebih kaedah dengan nama yang sama tetapi data input yang berbeza:
public class Constructor {
public String constructHelloSentence(String name) {
String resultSentence = "Hello world! My name is " + name;
System.out.println(resultSentence);
return resultSentence;
}
protected String constructHelloSentence(String firstName, String secondName) {
String resultSentence = "Hello " + firstName + "! My name is " + secondName;
System.out.println(resultSentence);
return resultSentence;
}
}
Di sini kita melihat bahawa kaedah tidak perlu mengandungi pengubah akses yang sama (serta jenis pemulangan). Jika kaedah terlebih beban dipanggil, maka daripada beberapa kaedah yang diisytiharkan, pengkompil secara automatik menentukan yang diperlukan berdasarkan parameter yang ditentukan semasa panggilan.
GO TO FULL VERSION