Variabel dan Metode Menyembunyikan di Jawa

1. Perkenalan

Dalam tutorial ini, kita akan belajar tentang variabel dan metode yang disembunyikan dalam bahasa Java .

Pertama, kita akan memahami konsep dan tujuan dari masing-masing skenario ini. Setelah itu, kita akan mempelajari kasus penggunaan dan memeriksa berbagai contoh.

2. Menyembunyikan Variabel

Penyembunyian variabel terjadi saat kita mendeklarasikan properti dalam lingkup lokal yang memiliki nama yang sama dengan yang sudah kita miliki di lingkup luar.

Sebelum beralih ke contoh, mari kita rekap secara singkat kemungkinan cakupan variabel di Java. Kami dapat mendefinisikannya dengan kategori berikut:

  • variabel lokal - dideklarasikan dalam potongan kode seperti metode, konstruktor, dalam blok kode mana pun dengan tanda kurung kurawal
  • variabel instan - didefinisikan di dalam kelas dan termasuk dalam instance objek
  • variabel kelas atau statis - dideklarasikan di kelas dengan kata kunci statis . Mereka memiliki cakupan tingkat kelas.

Sekarang, mari kita gambarkan persembunyian dengan contoh-contoh, untuk setiap kategori variabel.

2.1. Kekuatan Lokal

Mari kita lihat kelas HideVariable :

public class HideVariable { private String message = "this is instance variable"; HideVariable() { String message = "constructor local variable"; System.out.println(message); } public void printLocalVariable() { String message = "method local variable"; System.out.println(message); } public void printInstanceVariable() { String message = "method local variable"; System.out.println(this.message); } }

Di sini kita memiliki variabel pesan yang dideklarasikan di 4 tempat berbeda. Variabel lokal yang dideklarasikan di dalam konstruktor dan kedua metode membayangi variabel instance.

Mari kita uji inisialisasi suatu objek dan memanggil metode:

HideVariable variable = new HideVariable(); variable.printLocalVariable(); variable.printInstanceVariable();

Output dari kode diatas adalah:

constructor local variable method local variable this is instance variable

Di sini, 2 panggilan pertama mengambil variabel lokal.

Untuk mengakses variabel instance dari lingkup lokal, kita dapat menggunakan kata kunci ini seperti yang ditunjukkan dalam metode printInstanceVariable () .

2.2. Bersembunyi dan Hirarki

Demikian pula, ketika anak dan kelas induk memiliki variabel dengan nama yang sama, variabel anak menyembunyikan variabel dari orang tua.

Misalkan kita memiliki kelas induk:

public class ParentVariable { String instanceVariable = "parent variable"; public void printInstanceVariable() { System.out.println(instanceVariable); } }

Setelah itu kami mendefinisikan kelas anak:

public class ChildVariable extends ParentVariable { String instanceVariable = "child variable"; public void printInstanceVariable() { System.out.println(instanceVariable); } }

Untuk mengujinya, mari kita inisialisasi dua contoh. Satu dengan kelas induk dan satu lagi dengan anak, lalu panggil metode printInstanceVariable () pada masing-masing:

ParentVariable parentVariable = new ParentVariable(); ParentVariable childVariable = new ChildVariable(); parentVariable.printInstanceVariable(); childVariable.printInstanceVariable();

Outputnya menunjukkan properti yang bersembunyi:

parent variable child variable

Dalam kebanyakan kasus, kita harus menghindari membuat variabel dengan nama yang sama baik di kelas induk maupun anak . Sebagai gantinya, kita harus menggunakan pengubah akses yang tepat seperti private dan menyediakan metode pengambil / penyetel untuk tujuan itu.

3. Metode Menyembunyikan

Penyembunyian metode dapat terjadi dalam struktur hierarki apa pun di java. Ketika kelas anak mendefinisikan metode statis dengan tanda tangan yang sama sebagai metode statis di kelas induk, maka metode anak menyembunyikan yang ada di kelas induk. Untuk mempelajari lebih lanjut tentang kata kunci statis , artikel ini adalah tempat yang baik untuk memulai.

Perilaku yang sama yang melibatkan metode instance disebut method overriding. Untuk mempelajari lebih lanjut tentang metode penggantian, periksa panduan kami di sini.

Sekarang, mari kita lihat contoh praktis ini:

public class BaseMethodClass { public static void printMessage() { System.out.println("base static method"); } }

BaseMethodClass memiliki metode statis printMessage () tunggal .

Selanjutnya, mari buat kelas anak dengan tanda tangan yang sama seperti di kelas dasar:

public class ChildMethodClass extends BaseMethodClass { public static void printMessage() { System.out.println("child static method"); } }

Begini cara kerjanya:

ChildMethodClass.printMessage();

Output setelah memanggil metode printMessage () :

child static method

The ChildMethodClass.printMessage () menyembunyikan metode dalam BaseMethodClass .

3.1. Metode Menyembunyikan vs Mengganti

Menyembunyikan tidak berfungsi seperti menimpa, karena metode statis tidak polimorfik. Penimpaan hanya terjadi dengan metode instance. Ini mendukung pengikatan terlambat, sehingga metode mana yang akan dipanggil ditentukan saat runtime.

Di sisi lain, penyembunyian metode berfungsi dengan yang statis. Oleh karena itu ditentukan pada waktu kompilasi .

4. Kesimpulan

Pada artikel ini, kami membahas konsep metode dan variabel yang bersembunyi di Java . Kami menunjukkan skenario berbeda dari variabel bersembunyi dan membayangi. Sorotan penting dari artikel ini juga membandingkan metode penggantian dan penyembunyian.

Seperti biasa, kode lengkap tersedia di GitHub.