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 privatekata kunci sebelum pengisytiharan kaedah, maka kaedah hanya boleh dipanggil dari kelas yang sama di mana ia diisytiharkan. Kata publickunci 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. publicpengubahsuai

Kaedah (atau pembolehubah, atau kelas) yang ditandakan dengan publicpengubah suai boleh diakses dari mana-mana sahaja dalam program . Ini adalah tahap keterbukaan tertinggi — tiada sekatan.

2. privatepengubahsuai

Kaedah (atau pembolehubah, atau kelas) yang ditandakan dengan privatepengubah 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. protectedpengubahsuai

Jika kaedah ditandakan dengan protectedpengubah 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 publicpengubah 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. statickata kunci

Kata statickunci 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 Solutionsebelum 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 mainkaedah statik.

kenapa? Anda akan dapat menjawab sendiri soalan ini apabila anda mula belajar OOP dan memahami cara kaedah statik berfungsi.



3. throwskata kunci

Terdapat kata kunci lain yang mungkin anda lihat dalam pengisytiharan kaedah — throwskata kunci. Tidak seperti pengubah suai akses dan statickata 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. mainkaedah

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
Format umum pengisytiharan kaedah

Di mana access modifiers digantikan dengan public, protected, private, atau tiada langsung;

jika kaedah itu statik, maka statickata kunci itu muncul (ia tiada untuk kaedah bukan statik)

Typeialah jenis nilai pulangan ( voidjika tiada hasil)

Kini anda mungkin memahami maksud semua kata kunci dalam pengisytiharan kaedah main:

public static void main(String[] args) throws Exception
Mengisytiharkan mainkaedah

Akses kepada main()kaedah adalah mungkin dari mana-mana kelas, seperti yang ditunjukkan oleh publickata kunci.

Kaedah ini statik, jadi ia boleh dipanggil secara eksplisit sebagai Solution.main().

Kaedah maintidak mengembalikan sebarang hasil. Jenis pulangan ialah void(tiada jenis).

Kaedah ini mainmengambil argumen(!): tatasusunan rentetan. Dan nama parameter argsmencadangkan '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.