Cara Membuat Program Overriding Java dan Fungsinya
- Definisikan Kelas Induk (Superclass): Mulailah dengan mendefinisikan kelas induk yang berisi metode yang akan di-override di kelas turunannya. Ini adalah kelas yang akan menjadi acuan bagi implementasi metode di kelas turunan.
- /* Kelas induk (Superclass) */ public class Hewan { public void suara() { System.out.println("Hewan bersuara..."); } }
- Buat Kelas Turunan (Subclass): Selanjutnya, buat kelas turunan yang akan mewarisi kelas induknya dan mendefinisikan ulang metode yang ingin di-override. Pastikan untuk menggunakan anotasi @Override sebelum mendefinisikan metode yang akan di-override untuk memastikan bahwa secara eksplisit melakukan overriding.
- /* Kelas turunan (Subclass) */ public class Anjing extends Hewan { @Override public void suara() { System.out.println("Guk guk"); } }
- Panggil Metode dari Kelas Turunan: Terakhir, panggil metode yang telah di-override dari kelas turunan. Saat metode tersebut dipanggil, Java akan secara otomatis mengeksekusi implementasi yang didefinisikan dalam kelas turunan, bukan implementasi yang ada dalam kelas induk.
- public class Main { public static void main(String[] args) { Hewan hewan = new Anjing(); hewan.suara(); /* Output: Guk guk */ } }
class Derived
{
protected final void getDetails(){
System.out.println("Derived"
+" class");}
}
public class Test extends Derived
{
protected final void getDetails(){
System.out.println("Test"
+" class");}
public static void main(String[] args){
Derived obj = new Derived();
obj.getDetails();}
}
b) Test class
c) Runtime error
d) Compilation error
Jawabannya adalah d. Compilation error
Penjelasan: Method final dan static tidak bisa overriding.
class Derived
{
public void getDetails(String temp){
System.out.println("Derived"
+" class "
+temp);}
}
public class Test extends Derived
{
public int getDetails(String temp)
{System.out.println("Test"
+" class "
+temp);
return 0;}
public static void main(String[] args)
{Test obj = new Test();
obj.getDetails("MKN");}
}
b) Test class MKN
c) Compilation error
d) Runtime error
Jawabannya adalah c. Compilation error
Penjelasan: Method overriding harus memiliki signature yang sama, yang didalamnya termasuk daftar argumen dan tipe return.
Baca Juga:
class Derived
{
public void getDetails()
{System.out.println("Derived"
+" class");}
}
public class Test extends Derived
{
protected void getDetails()
{System.out.println("Test"
+" class");}
public static void main(String[] args){
Derived obj = new Test();
/* line xyz */
obj.getDetails();}
}
b) Compilation error pada line xyz
c) Derived class
d) Compilation error pada access modifier
Jawabannya adalah d. Compilation error pada access modifier
Penjelasan: Method overriding tidak bisa mengubah akses yang lebih ketat.
Contoh: Output overriding program 4.
import java.io.IOException;
class Derived
{
public void getDetails() throws IOException
/* line 23 */
{System.out.println("Derived"
+" class");}
}
public class Test extends Derived
{
public void getDetails() throws Exception
/* line 24 */
{System.out.println("Test"
+" class");}
public static void main(String[] args) throws IOException
/* line 25 */
{Derived obj = new Test();
obj.getDetails();}
}
b) Compilation error pada line 24
c) Compilation error pada line 25
d) Compilation error pada line 23, 24, dan 25
Jawabannya adalah b. Compilation error pada line 24
Penjelasan: Exception oleh overriding method seharusnya bukan exception yang baru atau lebih luas cakupannya. Pada contoh program sebelumnya exception adalah class yang lebih luas dari exception yang diperiksa IOexception, sehingga menghasilkan error compilation.
Contoh: Output overriding program 5.
class Derived
{
public void getDetails()
{System.out.printf("Derived"
+" class ");}
}
public class Test extends Derived
{
public void getDetails()
{System.out.printf("Test "
+"class ");
super.getDetails();}
public static void main(String[] args)
{Derived obj = new Test();
obj.getDetails();}
}
b) Derived class Test class
c) Compilation error
d) Runtime error
Jawabannya adalah a. Test class Derived class
Penjelasan: keyword super digunakan untuk memanggil method overriding dari child class secara eksplisit.
- Polimorfisme: Method overriding memungkinkan pengembang untuk menciptakan polimorfisme dalam program Java. Polimorfisme memungkinkan pengembang untuk menggunakan objek dari kelas turunan dengan cara yang sama seperti objek dari kelas induknya, tetapi perilaku yang sesuai dengan tipe objek aktual akan dipanggil.
- Fleksibilitas: Method overriding memberikan fleksibilitas dalam mendefinisikan perilaku yang sesuai dengan kelas turunan tanpa mengubah struktur atau implementasi dari kelas induknya. Ini memungkinkan untuk menyesuaikan perilaku objek sesuai dengan kebutuhan aplikasi.
- Penggunaan Kode Ulang: Method overriding memungkinkan untuk menggunakan kembali kode yang sudah ada dan mengubah perilaku yang diperlukan di kelas turunan. Hal ini mengurangi duplikasi kode dan mempermudah pemeliharaan kode.
- Enkapsulasi: Method overriding mendukung prinsip enkapsulasi dalam pemrograman berorientasi objek dengan memungkinkan untuk memisahkan logika implementasi dari antarmuka publik. Ini memungkinkan perubahan dalam implementasi metode tanpa mempengaruhi penggunaan metode tersebut.
- Peningkatan Keterbacaan Kode: Dengan menggunakan method overriding dengan bijak, pengembang dapat meningkatkan keterbacaan kode dengan menyediakan implementasi yang sesuai dengan nama metode yang sudah dikenal dari kelas induknya. Ini membuat kode lebih mudah dipahami dan dipelihara.
- Keterbatasan pada Penggunaan Final dan Static: Metode yang didefinisikan sebagai final dalam kelas induk tidak dapat di-override di kelas turunan. Begitu pula dengan metode yang didefinisikan sebagai static, karena metode tersebut tidak terkait dengan instansi objek dan tidak dapat di-override. Hal ini mengurangi fleksibilitas dalam penggunaan method overriding.
- Keterbatasan pada Perubahan Perilaku: Terkadang, method overriding dapat membatasi kemampuan untuk mengubah perilaku metode secara drastis di kelas turunan. Ini karena implementasi metode harus tetap konsisten dengan antarmuka yang telah ditentukan di kelas induknya.
- Membingungkan dan Menyulitkan Pemahaman Kode: Terlalu banyak method overriding yang kompleks atau berantakan dapat membuat kode sulit dipahami dan membingungkan. Hal ini terutama terjadi jika ada banyak kelas turunan yang melakukan overriding pada metode yang sama dari kelas induknya.
- Kesulitan dalam Debugging: Jika terjadi kesalahan dalam implementasi method overriding, debugging kode dapat menjadi sulit karena harus melacak implementasi metode yang benar dari kelas yang relevan. Hal ini dapat memakan waktu dan menghambat proses pengembangan.
- Pemahaman yang Salah: Penggunaan method overriding yang tidak tepat atau tidak jelas dapat menghasilkan pemahaman yang salah tentang perilaku objek dalam program. Ini dapat menyebabkan kesalahan dalam logika program dan mempersulit pemeliharaan kode di masa mendatang.
- Shadowing Fungsi Static Java dan Fungsinya
- Static Method dan Instance Method Java dan Fungsinya
- Cara Menentukan Nilai Variabel Static Final Java dan Fungsinya
- Return Covariant Java dan Fungsinya
- Object Class Java dan Fungsinya
- Perbedaan Static Class dan Non Static Class Java
- java.lang.Object dan Fungsinya
5 komentar untuk "Cara Membuat Program Overriding Java dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Mendeklarasikan method sub class yang sudah ada pada class induk dikenal sebagai method overriding. Overriding dilakukan agar class anak dapat memberikan suatu implementasi sendiri ke method yang sudah disediakan oleh class indukk.
BalasHapusDalam bahasa pemrograman berorientasi object apapun, overriding adalah fitur yang memungkinkan subclass atau class turunan untuk menyediakan implementasi spesifik dari method yang sudah disediakan oleh salah satu class super atau class induk. Method overriding merupakan salah satu cara bagi java untuk mencapai runtime polymorphism.
BalasHapusFungsi dari anotasi @overridie pada Java adalah memberi tahu kompilator bahwa elemen tersebut dimaksudkan untuk mengganti (override) elemen yang telah dideklarasikan dalam superclass.
BalasHapusApa yang terjadi dalam suatu method override pada bahasa pemrograman Java?
BalasHapusKemampuan subclass untuk menggati method memungkinkan class untuk mewarisi sifat dari superclass yang perilakukany cukup dengan dan kemudian mengubah perilaku tersebut sesuai dengan kebutuhan dari class tersebut. Method overriding memiliki nama, jumlah, dan tipe parameter yang sama, dan tipe kembalian sebagai method yang telah di-override.
Hapus