8 -‐ Overriding dan Overloading PENDAHULUAN Pada bagian sebelumnya, telah dibahas tentang relasi inheritance. Dalam relasi tersebut, dimungkinkan suatu class (super class) untuk diturunkan ke class yang lain (sub class). Dan akibat dari turunan tersebut, atribut dan method dari super class akan diturunkan atau diwariskan ke sub class. Dengan kata lain, sub class akan memiliki atribut dan method yang diwariskan dari super class. Ada kalanya, sub class perlu untuk memodifikasi isi dari method yang telah diwarisi dari super class. Tujuanya adalah agar method yang diwarisi tersebut bisa memiliki proses yang lebih spesifik untuk sub class. Konsep tersebut disebut sebagai overriding method. Overriding method merupakan kemampuan sub class untuk memodifikasi atau mendefinisikan method yang sudah diwarisi dari super class, sehingga method tersebut bisa memiliki atau melakukan proses yang lebih spesifik. Contoh di bawah ini akan memberikan ilustrasi proses overriding.
Class Dog merupakan sub class dari Animal. Class Dog mewarisi method move() dari Animal. Isi dari method move() dari class Animal masih sangat umum, yaitu ia akan menampilkan kalimat Animals can move. Ketika method move() tersebut diwariskan ke class Dog, maka perlu dimodifikasi isinya, sehingga bisa menjadi lebih spesifik dan sesuai untuk Dog. Oleh karena itu, isi method move() di dalam class Dog dimodifikasi atau disesuaikan menjadi Dogs can walk and run. Dengan kata lain, method move() yang diturunkan oleh Animal, di-‐override oleh class Dog. Method yang meng-‐override (yang ada di subclass) dikenal dengan overriding method, sedangkan method yang di-‐override (yang ada di superclass) dikenal dengan overridden method. Syarat terjadinya overriding method: • Overiding method dilakukan di dalam subclass • Nama method, tipe data method dan daftar argument/parameter overriding method harus sama dengan overridden method
•
Modifier access dari overriding method, harus sama atau lebih luas daripada modifier access dari overridden method
PERCOBAAN 1 : Overriding Tujuan: 1. Memahami konsep overriding 2. Memahami kapan overriding digunakan 3. Memahami ciri-‐ciri overriding method 4. Bisa mengimplementasikan konsep overriding Prosedur Percobaan: 1. Buatlah klas di dalam paket overriding sesuai dengan diagram klas di bawah ini:
Ketr :
Method hitungLuas() dan hitungKeliling() di klas SegiTigaSamaKaki, SegiEmpat, dan Lingkaran, isinya merupakan operasi perhitungan luas dan keliling masing-‐masing jenis bangundatar. Rumusnya menyesuaikan dengan rumus luas dan keliling bangun datar yang bersangkutan.
2. Tampilan program kurang lebih seperti di bawah ini: -‐ Klas BangunDatar
-‐ Klas SegitigaSamaKaki
-‐ Klas SegiEmpat
-‐ Klas Lingkaran
3. Buatlah klas Main
Kemudian jalankan klas tersebut, dan perhatikan hasil keluarannya
4. Jawablah pertanyaan di bawah ini: a. Method apakah dari klas SegitigaSamaKaki yang merupakan method overriding? …………………………………………………………………………………………………………… …………………………………………………………………………………………… b. Method apakah dari klas SegiEmpat yang merupakan method overriding? …………………………………………………………………………………………………………… …………………………………………………………………………………………… c. Method apakah dari klas Lingkaran yang merupakan method overriding?
d.
e.
f.
g.
h.
i.
…………………………………………………………………………………………………………… …………………………………………………………………………………………… Method apakah dari klas BangunDatar yang di-‐override (overridden method)? …………………………………………………………………………………………………………… …………………………………………………………………………………………… Mengapa diperlukan overriding method (sebagaimana disebutkan pada jawaban soal a, b dan c) pada class SegitigaSamaKaki, SegiEmpat dan Lingkaran? …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… Perhatikan klas SegiEmpat, apakah ada di dalam klas tersebut method yang BUKAN overriding method? Jika ada, sebutkan! …………………………………………………………………………………………………………… …………………………………………………………………………………………… Misal pada klas SegitigaSamaKaki nama method hitungLuas() diubah menjadi hitungLuasSegiTigaSamaKaki(), apakah masih disebut sebagai overriding method? Mengapa? …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… Kalau demikian, apa saja ciri-‐ciri method overriding? …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… Dari percobaan dan pertanyaan-‐pertanyaan tersebut, tarik kesimpulan mengenai overriding. …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… ……………………………………………………………………………………………
PERCOBAAN 2 : Overloading Tujuan: 1. Memahami konsep overloading 2. Memahami kapan overloading digunakan 3. Memahami ciri-‐ciri overloading method 4. Bisa mengimplementasikan konsep overloading Prosedur Percobaan: 1. Di dalam paket overloading, buatlah klas sesuai dengan diagram klas di bawah ini! Perhatikan bahwa di semua klas hanya memiliki KONSTRUKTOR DEFAULT.
2. Perubahan pada kode program: -‐ Klas BangunDatar
-‐ Klas SegiTigaSamaKaki
-‐ Klas SegiEmpat
-‐ Klas Lingkaran
3. Buat juga di method main() di klas Main
Jalankan program dan amati hasilnya:
4. Jawablah pertanyaan di bawah ini: a. Method apa sajakah dari klas SegiEmpat yang merupakan method overloading ? …………………………………………………………………………………………………………… …………………………………………………………………………………………… b. Method apa sajakah dari klas SegitigaSamaKaki yang merupakan method overloading ? …………………………………………………………………………………………………………… …………………………………………………………………………………………… c. Method apa sajakah dari klas Lingkaran yang merupakan method overloading ? …………………………………………………………………………………………………………… …………………………………………………………………………………………… d. Apabila dalam klas SegiEmpat ditambahkan method public void hitungLuas(double x, double y){…..} apa yang terjadi? Apakah method yang baru saja ditambahkan tadi merupakan method overloading? Jelaskan jawaban anda …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… e. Masih di klas SegiEmpat, missal ditambahkan method public void hitungLuas(double x){….} apa yang terjadi? Apakah method yang baru saja ditambahkan tadi merupakan method overloading? Jelaskan jawaban anda …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… f. Sebutkan ciri-‐ciri method overloading! …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… ……………………………………………………………………………………………
g. Dari hasil percobaan dan pertanyaan di atas tarik kesimpulan tentang overloading! …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………………………… ……………………………………………………………………………………………