Cuplikan kuliah dengan seorang mentor sebagai bagian dari kursus Codegym University. Mendaftar untuk kursus penuh.


"Salam, Amigo! Kudengar kau sudah menguasai metode?"

"Hai, Rishi. Ya, saya telah memotong trik guru itu. Saya akan mengatakan bahwa itu tidak terlalu buruk, tetapi Anda akan memberi tahu saya, 'Tidak, tidak! Anda belum menemukan apa pun. '"

"Kamu jelas telah menghabiskan terlalu banyak waktu mengobrol dengan guru tertentu, mungkin dengan Diego. Ngomong-ngomong... aku masih berharap kamu cukup memahami metode. Lagi pula, hari ini aku akan mengajarimu beberapa kata ajaib yang membantu menggambarkan metode ' lingkup pengaruh.

"Kedengarannya menarik."

"Faktanya, semuanya sederhana. Sebelum setiap metode, pemrogram dapat menentukan apa yang disebut pengubah akses. Ini termasuk kata kunci berikut: public, protected, private.

"Pengubah akses ini memungkinkan Anda membatasi akses kelas lain ke suatu metode.

"Misalnya, jika Anda menulis privatekata kunci sebelum deklarasi metode, maka metode tersebut hanya dapat dipanggil dari kelas yang sama di mana ia dideklarasikan. Kata publickunci memungkinkan akses ke metode yang ditandai dari metode apa pun dari kelas mana pun.

Ada total 3 pengubah seperti itu, tetapi ada 4 jenis akses ke suatu metode. Ini karena tidak adanya pengubah akses juga berarti sesuatu. Berikut tabel lengkapnya:

Akses dari...
Pengubah Kelas apa saja Kelas anak Paketnya Kelasnya
public Ya Ya Ya Ya
protected TIDAK Ya Ya Ya
tidak ada pengubah TIDAK TIDAK Ya Ya
private TIDAK TIDAK TIDAK Ya

"Dan inilah penjelasan lengkap tentang pengubah akses:

1. publicpengubah

Metode (atau variabel, atau kelas) yang ditandai dengan publicpengubah dapat diakses dari mana saja di dalam program . Ini adalah tingkat keterbukaan tertinggi — tidak ada batasan.

2. privatepengubah

Metode (atau variabel, atau kelas) yang ditandai dengan privatepengubah hanya dapat diakses dari kelas yang sama di mana ia dideklarasikan . Untuk semua kelas lain, metode yang ditandai (atau variabel) tidak terlihat. Seolah-olah itu tidak ada. Ini adalah tingkat pembatasan tertinggi — hanya untuk kelasnya sendiri.

3. Tidak ada pengubah (pengubah default)

Jika metode (atau variabel) tidak ditandai dengan pengubah apapun, maka dianggap memiliki 'pengubah default'. Variabel atau metode dengan pengubah itu (yaitu tidak ada sama sekali) dapat dilihat oleh semua kelas dalam paket tempat mereka dideklarasikan . Dan hanya untuk mereka. Pengubah ini juga terkadang disebut package-private, mengisyaratkan bahwa akses ke variabel dan metode terbuka untuk seluruh paket tempat kelasnya berada.

4. protectedpengubah

Jika suatu metode ditandai dengan protectedpengubah, maka metode tersebut dapat diakses dari kelas yang sama, paket yang sama, dan keturunan (kelas yang mewarisi kelas tempat metode tersebut dideklarasikan). Kami akan menganalisis topik ini lebih detail dalam pencarian Java Core."

"Menarik, tapi saya tidak yakin apakah saya bisa segera menempatkan pengubah ini di semua tempat yang tepat.

"Anda akan sampai di sana secara bertahap. Tidak perlu khawatir sebelumnya. Sampai Anda mencapai akhir dari pencarian Java Syntax, Anda dapat menggunakan pengubah publicpada semua metode Anda (serta kelas dan variabel instan). Anda memerlukan pengubah lain saat kita mulai aktif mempelajari OOP."

"Bisakah Anda menjelaskan lebih detail mengapa pengubah akses diperlukan?"

"Mereka menjadi penting untuk proyek-proyek besar yang ditulis oleh puluhan dan ratusan programmer pada saat yang bersamaan.

"Kadang-kadang ada situasi ketika seorang programmer ingin membagi metode yang terlalu besar menjadi beberapa bagian dan memindahkan sebagian kode ke metode pembantu. Tetapi pada saat yang sama, dia tidak ingin pemrogram lain memanggil metode pembantu ini, karena kode yang sesuai mungkin tidak berfungsi dengan benar."

"Jadi mereka membuat pengubah akses ini. Jika Anda menandai metode pembantu dengan kata private , maka tidak ada kode selain kelas Anda yang dapat melihat metode pembantu Anda."

"Kurasa aku mengerti."

statickata kunci

"Ada kata kunci lain yang menarik. Itu adalah static. Tidak mengherankan, itu membuat metode menjadi statis."

"Maksudnya itu apa?"

"Aku akan memberitahumu lebih banyak tentang itu nanti. Jangan khawatir. Untuk saat ini, coba ingat beberapa fakta tentang metode statis.

Fakta 1. Metode statis tidak dilampirkan ke objek apa pun, melainkan milik kelas tempat ia dideklarasikan. Untuk memanggil metode statis, Anda perlu menulis:

ClassName.MethodName()

Contoh metode statis:

Nama kelas Nama metode statis
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Nama kelas sebelum nama metode statis dapat dihilangkan jika Anda memanggil metode statis dari dalam kelasnya. Inilah mengapa Anda tidak perlu menulis Solutionsebelum nama dari setiap metode statis yang dipanggil.

Fakta 2. Metode statis tidak dapat mengakses metode non-statis dari kelasnya sendiri. Metode statis hanya dapat mengakses metode statis. Akibatnya, kami mendeklarasikan semua metode yang ingin kami panggil dari mainmetode statis."

"Mengapa demikian?"

"Anda akan menjawab sendiri pertanyaan ini saat mulai mempelajari OOP dan memahami cara kerja metode statis. Sampai saat itu, percayalah pada saya.

throwskata kunci

"Ada kata kunci lain yang mungkin pernah Anda lihat dalam deklarasi metode — kata throwskunci. Tidak seperti pengubah akses dan statickata kunci, kata kunci ini ditempatkan setelah parameter metode:

public static Type name(parameters) throws Exception
{
  method body
}

"Dan apa artinya?"

"Sekali lagi saya harus memberi tahu Anda bahwa Anda akan mempelajari tujuan sebenarnya nanti, ketika kami mempelajari pengecualian (di Level 15).

Tetapi untuk menyentuhnya secara dangkal, kita dapat mengatakan bahwa metode yang ditandai dengan throwskata kunci dapat membuang kesalahan (pengecualian), yang berarti turunan dari Exceptionkelas (dan kelas yang mewarisinya). Jika beberapa jenis kesalahan yang berbeda dapat terjadi di kelas, maka Anda perlu membuat daftar masing-masing kesalahan yang dipisahkan dengan koma."

"Kedengarannya misterius dan tidak bisa dipahami! Aku harus menunggu sampai Level 14."

metode utama

"Sekarang mari kita lihat lebih dekat metode utama. Anda sudah memahami bahwa baris di mana metode dideklarasikan, yang berisi semua pengubah, akan memengaruhi bagaimana metode ini dipanggil dari kelas dan metode lain. Selain itu, ini memengaruhi jenis metode hasil metode akan kembali dan menunjukkan kesalahan apa yang mungkin terjadi saat dijalankan.

Baris seperti itu disebut deklarasi metode dan memiliki format umum berikut:

access modifier static Type name(parameters) throws exceptions
Format umum deklarasi metode

Di mana access modifiersdiganti dengan public, protected, private, atau tidak sama sekali;

jika metodenya statis, maka statickata kunci muncul (tidak ada untuk metode non-statis)

Typeadalah jenis nilai pengembalian ( voidjika tidak ada hasil)

"Sekarang Anda memiliki pemahaman yang jauh lebih baik tentang arti semua kata ini dalam deklarasi metode main:

public static void main(String[] args) throws Exception
Mendeklarasikan mainmetode

"Nah, sekarang saya menyadari bahwa akses ke main()metode ini dimungkinkan dari kelas mana pun, seperti yang ditunjukkan oleh publickata kunci. Metode ini statis, sehingga dapat disebut secara eksplisit sebagai Solution.main()."

"Hasil apa yang main()dikembalikan metode ini?"

"Tidak ada sama sekali! Jenis hasilnya adalah void. Ini seperti jenis kosong, pengganti."

"Apa yang main()ada dalam tanda kurung?"

"Hmm... Ternyata mainmetode ini membutuhkan argumen (!). Mereka diteruskan sebagai larik string."

"Itu benar. Dan nama parameter argsmenyarankan 'argumen' ke pikiran kita. Saat program dimulai, Anda bisa memberikannya argumen — larik string. Mereka akan dimuat dalam larik argsdalam main()metode."

"Whoa! Aku bertanya-tanya tentang ini saat melihatnya pertama kali, tapi kemudian aku terbiasa dan mulai menulis daftar parameter tanpa berpikir."

"Kita semua pernah ke sana. Akhirnya, kesalahan yang tidak tertangani seperti Exception(atau keturunannya) dapat terjadi dalam main()metode. Kita tahu ini berkat bagian throws Exceptiondari deklarasi."

"Terima kasih, Rishi. Aku tidak mengerti semuanya, tapi ini menarik."

"Sama-sama. Lambat laun Anda akan memahami semua poin halus ini, saya yakin."