Implementasi
Implementasi
Dalam implementasi praktis, langkah krusial pertama adalah menentukan aksesibilitas menggunakan modifikator. Penggunaan
protected sangat disarankan karena memberikan keseimbangan: menjaga data tetap privat dari dunia luar, namun tetap dapat diakses oleh kelas turunan. Saat membangun Subclass, kita sering menggunakan Method Overriding dengan anotasi @Override. Ini memungkinkan kelas anak mendefinisikan ulang perilaku metode induk agar lebih relevan dengan fungsinya yang spesifik. Kata kunci
super memegang peranan vital dalam sinkronisasi antar kelas. super() digunakan di dalam konstruktor untuk memicu inisialisasi pada kelas induk sebelum kelas anak melakukan prosesnya sendiri. Tanpa ini, status awal dari objek induk mungkin tidak terbentuk dengan benar, yang berpotensi menyebabkan NullPointerException atau kegagalan logika lainnya. super juga memungkinkan kita memanggil metode asli induk meskipun metode tersebut telah di-override di kelas anak. Selain itu, Java menyediakan kata kunci
final sebagai mekanisme keamanan dalam inheritance. Jika sebuah kelas ditandai sebagai final, kelas tersebut tidak dapat diwariskan, melindungi logika internalnya dari modifikasi pihak ketiga. Hal yang sama berlaku untuk metode; metode final tidak dapat di-override. Fitur ini sangat penting saat Anda membangun pustaka (library) atau API di mana integritas algoritma tertentu harus tetap terjaga tanpa gangguan dari Subclass. Mari kita proyeksikan teori ini ke dalam skenario nyata: sistem manajemen SDM. Kita dapat membangun Superclass
Karyawan sebagai cetak biru umum yang menyimpan nama, ID, dan metode prosesAbsensi(). Namun, setiap posisi memiliki aturan penggajian dan fasilitas yang berbeda. Di sinilah kekuatan inheritance muncul; kita cukup membuat Subclass seperti Manager, Developer, dan Accountant yang semuanya mengekstensi Karyawan. Dalam praktik pengkodeannya, kelas
Manager bisa menambahkan atribut tunjanganJabatan, sementara kelas Developer memiliki atribut bahasaKeahlian. Meskipun memiliki atribut unik, keduanya tetap berbagi metode prosesAbsensi() yang sama dari induknya. Jika suatu saat perusahaan mengubah kebijakan absensi, kita hanya perlu mengubah satu baris kode di kelas Karyawan, dan seluruh tipe posisi akan mengikuti aturan baru tersebut secara otomatis. Fleksibilitas ini juga mendukung prinsip Open/Closed dalam desain perangkat lunak. Sistem Anda menjadi "terbuka untuk perluasan, tetapi tertutup untuk modifikasi". Jika di masa depan muncul posisi baru seperti
DataScientist, Anda hanya perlu membuat kelas baru yang mengekstensi Karyawan tanpa menyentuh atau merisiko kerusakan pada kode Manager atau Developer yang sudah stabil dan berjalan di produksi.
Komentar
Posting Komentar