1. Pengubah suai akses
Sebelum setiap kaedah, pengaturcara boleh menentukan apa yang dipanggil pengubah akses. Ini termasuk kata kunci berikut: public
, protected
, private
.
Pengubah suai akses ini membenarkan anda menyekat akses kelas lain kepada kaedah.
Sebagai contoh, jika anda menulis private
kata kunci sebelum pengisytiharan kaedah, maka kaedah hanya boleh dipanggil dari kelas yang sama di mana ia diisytiharkan. Kata public
kunci membenarkan akses kepada kaedah yang ditanda daripada mana-mana kaedah mana-mana kelas.
Terdapat sejumlah 3 pengubah sedemikian, tetapi terdapat 4 jenis akses kepada kaedah. Ini kerana ketiadaan pengubah akses juga bermakna sesuatu.
Akses daripada... | ||||
---|---|---|---|---|
Pengubah suai | Mana-mana kelas | Kelas kanak-kanak | Pakejnya | Kelasnya |
public |
ya | ya | ya | ya |
protected |
Tidak | ya | ya | ya |
tiada pengubahsuai | Tidak | Tidak | ya | ya |
private |
Tidak | Tidak | Tidak | ya |
1. public
pengubahsuai
Kaedah (atau pembolehubah, atau kelas) yang ditandakan dengan public
pengubah suai boleh diakses dari mana-mana sahaja dalam program . Ini adalah tahap keterbukaan tertinggi — tiada sekatan.
2. private
pengubahsuai
Kaedah (atau pembolehubah, atau kelas) yang ditandakan dengan private
pengubah suai hanya boleh diakses daripada kelas yang sama di mana ia diisytiharkan . Untuk semua kelas lain, kaedah yang ditandakan (atau pembolehubah) tidak kelihatan. Seolah-olah ia tidak wujud. Ini adalah tahap sekatan tertinggi — hanya kelasnya sendiri.
3. Tiada pengubah (ubah suai lalai)
Jika kaedah (atau pembolehubah) tidak ditandakan dengan mana-mana pengubah, maka ia dianggap mempunyai 'pengubah suai lalai'. Pembolehubah atau kaedah dengan pengubah itu (iaitu dengan tiada langsung) kelihatan kepada semua kelas dalam pakej di mana ia diisytiharkan . Dan hanya kepada mereka. Pengubah suai ini juga kadangkala dipanggil package-private
, membayangkan bahawa akses kepada pembolehubah dan kaedah terbuka kepada keseluruhan pakej di mana kelas mereka berada.
4. protected
pengubahsuai
Jika kaedah ditandakan dengan protected
pengubah suai, maka ia boleh diakses daripada kelas yang sama, pakej yang sama dan keturunan (kelas yang mewarisi kelas di mana kaedah itu diisytiharkan). Kami akan menganalisis topik ini dengan lebih terperinci dalam pencarian Java Core.
Anda boleh menggunakan public
pengubah suai pada semua kaedah anda (serta semua kelas dan pembolehubah kelas anda) sehingga anda mencapai penghujung pencarian Java Syntax. Anda memerlukan pengubah suai lain apabila kami mula belajar secara aktif OOP.
Mengapakah pengubahsuai akses diperlukan?
Mereka menjadi perlu untuk projek besar yang ditulis oleh puluhan dan ratusan pengaturcara pada masa yang sama.
Kadangkala terdapat situasi apabila pengaturcara ingin membahagikan kaedah yang terlalu besar kepada bahagian dan memindahkan sebahagian kod ke kaedah pembantu. Tetapi pada masa yang sama, dia tidak mahu pengaturcara lain memanggil kaedah pembantu ini, kerana kod yang sepadan mungkin tidak berfungsi dengan betul.
Jadi mereka datang dengan pengubah suai akses ini. Jika anda menandai kaedah pembantu dengan perkataan persendirian , maka tiada kod selain kelas anda boleh melihat kaedah pembantu anda.
2. static
kata kunci
Kata static
kunci menjadikan kaedah statik. Kita lihat apa maksudnya nanti. Buat masa ini, hanya ingat beberapa fakta tentang kaedah statik.
Fakta 1. Kaedah statik tidak dilampirkan pada mana-mana objek , sebaliknya tergolong dalam kelas di mana ia diisytiharkan. Untuk memanggil kaedah statik, anda perlu menulis:
ClassName.MethodName()
Contoh kaedah statik:
Nama kelas | Nama kaedah statik | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
Nama kelas sebelum nama kaedah statik boleh ditinggalkan jika anda memanggil kaedah statik dari dalam kelasnya. Inilah sebabnya mengapa anda tidak perlu menulis Solution
sebelum nama setiap kaedah statik yang dipanggil.
Fakta 2. Kaedah statik tidak boleh mengakses kaedah bukan statik kelasnya sendiri. Kaedah statik hanya boleh mengakses kaedah statik. Akibatnya, kami mengisytiharkan semua kaedah yang kami mahu panggil daripada main
kaedah statik.
kenapa? Anda akan dapat menjawab sendiri soalan ini apabila anda mula belajar OOP dan memahami cara kaedah statik berfungsi.
3. throws
kata kunci
Terdapat kata kunci lain yang mungkin anda lihat dalam pengisytiharan kaedah — throws
kata kunci. Tidak seperti pengubah suai akses dan static
kata kunci, kata kunci ini diletakkan selepas parameter kaedah:
public static Type name(parameters) throws Exception
{
method body
}
Kami akan mempertimbangkan maksud tepatnya sedikit kemudian apabila kami mengkaji pengecualian.
Tetapi untuk menyentuhnya secara cetek, kita boleh mengatakan bahawa kaedah yang ditandakan dengan kata kunci lontaran boleh membuang ralat (pengecualian), yang bermaksud contoh kelas Exception
(dan kelas yang mewarisinya). Jika beberapa jenis ralat boleh berlaku dalam kelas, maka anda perlu menyenaraikan setiap ralat yang dipisahkan dengan koma.
4. main
kaedah
Baris di mana kaedah diisytiharkan, yang mengandungi semua pengubah, akan mempengaruhi cara kaedah ini dipanggil daripada kelas dan kaedah lain. Ia memberi kesan kepada jenis hasil kaedah akan kembali dan menunjukkan ralat yang mungkin berlaku semasa ia dijalankan.
Baris sedemikian dipanggil pengisytiharan kaedah dan mempunyai format umum berikut:
access modifier static Type name(parameters) throws exceptions
Di mana access modifiers
digantikan dengan public
, protected
, private
, atau tiada langsung;
jika kaedah itu statik, maka static
kata kunci itu muncul (ia tiada untuk kaedah bukan statik)
Type
ialah jenis nilai pulangan ( void
jika tiada hasil)
Kini anda mungkin memahami maksud semua kata kunci dalam pengisytiharan kaedah main
:
public static void main(String[] args) throws Exception
Akses kepada main()
kaedah adalah mungkin dari mana-mana kelas, seperti yang ditunjukkan oleh public
kata kunci.
Kaedah ini statik, jadi ia boleh dipanggil secara eksplisit sebagai Solution.main()
.
Kaedah main
tidak mengembalikan sebarang hasil. Jenis pulangan ialah void
(tiada jenis).
Kaedah ini main
mengambil argumen(!): tatasusunan rentetan. Dan nama parameter args
mencadangkan 'hujah' kepada fikiran kita. Apabila atur cara dimulakan, anda boleh menyampaikan hujah-hujahnya — susunan rentetan. Mereka akan terkandung dalam args
tatasusunan dalam main()
kaedah.
Ralat yang tidak dikendalikan seperti Exception
(atau keturunannya) boleh berlaku dalam main()
kaedah.
GO TO FULL VERSION