Mengganti Metode Java

Dalam tutorial ini, kita akan belajar tentang metode overriding di Java dengan bantuan contoh.

Di tutorial terakhir, kita belajar tentang pewarisan. Warisan adalah properti OOP yang memungkinkan kita untuk mendapatkan kelas baru (subkelas) dari kelas yang sudah ada (superclass). Subclass mewarisi atribut dan metode superclass.

Sekarang, jika metode yang sama didefinisikan di superclass dan subclass, maka metode kelas subclass menimpa metode superclass. Ini dikenal sebagai penimpaan metode.

Contoh 1: Penimpaan Metode

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Keluaran :

 Saya seekor anjing. 

Dalam program di atas, displayInfo()metode ini ada di superclass Animal dan subclass Dog.

Ketika kita memanggil displayInfo()menggunakan objek d1 (objek subclass), metode di dalam subclass Dog dipanggil. The displayInfo()metode subclass menimpa metode yang sama dari superclass.

Perhatikan penggunaan @Overrideanotasi dalam contoh kita. Di Java, anotasi adalah metadata yang kami gunakan untuk memberikan informasi kepada compiler. Di sini, @Overrideanotasi menentukan compiler bahwa metode setelah anotasi ini menimpa metode superclass.

Ini tidak wajib digunakan @Override. Namun, saat kita menggunakan ini, metode tersebut harus mengikuti semua aturan penggantian. Jika tidak, kompilator akan menghasilkan kesalahan.

Aturan Pengganti Java

  • Baik superclass dan subclass harus memiliki nama metode yang sama, tipe kembalian yang sama, dan daftar parameter yang sama.
  • Kita tidak dapat mengganti metode yang dideklarasikan sebagai finaldan static.
  • Kita harus selalu mengganti metode abstrak superclass (akan dibahas di tutorial selanjutnya).

Kata kunci super di Java Overriding

Pertanyaan umum yang muncul saat melakukan penggantian di Java adalah:

Bisakah kita mengakses metode superclass setelah menimpa?

Jawabannya ya . Untuk mengakses metode superclass dari subclass, kami menggunakan superkata kunci.

Contoh 2: Penggunaan Kata Kunci super

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( super.displayInfo(); System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Keluaran :

Saya adalah seekor binatang. Saya seekor anjing.

Dalam contoh di atas, subclass Dog mengganti metode displayInfo()superclass Animal.

Saat kita memanggil metode displayInfo()menggunakan objek d1 dari subkelas Dog, metode di dalam subkelas Dog dipanggil; metode di dalam superclass tidak dipanggil.

Di displayInfo()dalam subclass Dog, kita biasa super.displayInfo()memanggil displayInfo()superclass.

Penting untuk dicatat bahwa konstruktor di Java tidak diturunkan. Oleh karena itu, tidak ada yang namanya overriding konstruktor di Jawa.

Namun, kita bisa memanggil konstruktor superclass dari subkelasnya. Untuk itu, kami gunakan super(). Untuk mempelajari lebih lanjut, kunjungi kata kunci super Java.

Access Specifiers di Method Overriding

Metode yang sama dideklarasikan di superclass dan subclassnya dapat memiliki penentu akses yang berbeda. Namun, ada batasannya.

Kita hanya dapat menggunakan penentu akses tersebut di subkelas yang menyediakan akses lebih besar daripada penentu akses superkelas. Sebagai contoh,

Misalkan, metode myClass()di superclass dideklarasikan protected. Kemudian, metode yang sama myClass()di subclass dapat berupa publicatau protected, tetapi tidak private.

Contoh 3: Access Specifier di Overriding

 class Animal ( protected void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Keluaran :

 Saya seekor anjing. 

Dalam contoh di atas, subclass Dog mengganti metode displayInfo()superclass Animal.

Kapanpun kita memanggil displayInfo()menggunakan d1 (objek subkelas), metode di dalam subkelas tersebut dipanggil.

Perhatikan bahwa, displayInfo()dideklarasikan protecteddi superclass Animal. Metode yang sama memiliki publicpenentu akses di subkelas Anjing. Hal ini dimungkinkan karena publicmemberikan akses yang lebih besar daripada protected.

Mengganti Metode Abstrak

Di Java, kelas abstrak dibuat untuk menjadi kelas super dari kelas lain. Dan, jika kelas berisi metode abstrak, itu wajib untuk menggantinya.

Kita akan mempelajari lebih lanjut tentang kelas abstrak dan menimpa metode abstrak di tutorial selanjutnya.

Artikel yang menarik...