Di balik visual memukau dari game populer seperti Genshin Impact atau Mobile Legends, terdapat arsitektur kode yang masif namun terstruktur. Jika kita mengamati mekanisme karakternya, setiap entitas di dalam game tersebut selalu berbagi fondasi sistem yang identik, mulai dari fungsi navigasi seperti berjalan dan berlari, penamaan identifier, hingga pengelolaan poin kesehatan (HP).
Masalahnya, menulis ulang fungsi-fungsi dasar ini secara
modular untuk ratusan karakter yang berbeda merupakan bentuk pemborosan waktu
yang fatal, sekaligus pemicu utama membengkaknya ukuran repositori kode (code
bloat). Untuk mengatasi redundansi tersebut, dunia pemrograman berorientasi
objek menyediakan solusi arsitektural yang efisien, yaitu konsep inheritance
(pewarisan).
Apa itu inheritance? Secara sederhana, inheritance merupakan suatu mekanisme yang memungkinkan sebuah kelas baru mengadopsi seluruh atribut dan perilaku dari kelas yang telah didefinisikan sebelumnya. Dalam terminologi Java, kelas yang menjadi sumber properti disebut Superclass (kelas induk), sedangkan kelas yang menerima warisan tersebut dinamakan Subclass (kelas anak). Hubungan ini sangat mirip dengan seorang anak di dunia nyata yang mewarisi ciri fisik dari orang tuanya tanpa harus membentuk karakteristik fisik tersebut dari nol.
Sebagai contoh, pada logika game RPG, kita dapat membuat satu kelas induk umum bernama karakterGame. Kelas induk ini bertugas menampung variabel dasar seperti nama dan jumlah darah. Setelah kelas induk ini siap, kita bisa melahirkan kelas anak yang lebih spesifik, misalnya kelas Penyihir.
Hebatnya, kelas Penyihir ini secara otomatis langsung mewarisi atribut nama dan darah berkat penggunaan kata kunci extends dalam bahasa Java. Selain memanfaatkan warisan dasar tersebut, kelas anak juga dapat diberikan kemampuan unik yang tidak dimiliki oleh kelas lainnya, contohnya, merapal mantra sihir khusus. Pendekatan terstruktur ini membuat kode program menjadi jauh lebih ringkas, efisien, dan sangat mudah dimodifikasi di masa depan.
Untuk melihat bagaimana konsep ini bekerja secara nyata, Anda dapat langsung menyalin dan menguji kode program Java di bawah ini menggunakan IDE NetBeans. Pastikan Anda membuat nama file yang sama persis dengan nama public class utamanya agar program dapat dikompilasi dan dijalankan tanpa ada error.
class KarakterGame {protected String nama;protected int darah;public KarakterGame(String nama, int darah) {this.nama = nama;this.darah = darah;}public void infoKarakter() {System.out.println("Karakter: " + nama + " | HP: " + darah);}}class Penyihir extends KarakterGame {private int mana;public Penyihir(String nama, int darah, int mana) {super(nama, darah);this.mana = mana;}public void keluarkanMantra() {System.out.println(nama + " mengeluarkan sihir api! "+ "(Mana berkurang, sisa: " + (mana - 10) + ")");}}public class MainGame {public static void main(String[] args) {Penyihir wizardSaya = new Penyihir("Gandalph", 100, 50);wizardSaya.infoKarakter();wizardSaya.keluarkanMantra();}}
Pada akhirnya, konsep pewarisan ini bukan sekadar teori formal yang tertulis di buku teks perkuliahan. Ini merupakan fondasi krusial yang membantu para praktisi IT dalam menulis kode program yang bersih tanpa pengulangan baris yang berlebihan. Memahami logika dasar pewarisan ini secara matang akan menjadi modal utama Anda untuk menguasai arsitektur pemrograman yang jauh lebih kompleks nantinya…


