POLIMORFISME, INHERITANCE, OVERLOADING Dan OVERRIDING
Nama: Angga
Saputra Dinata
NPM:
19316035
Kelas: TK19a
Pengertian Polimorfisme
Polimorfisme
terbagi menjadi dua suku kata yaitu, Poly yang berarti banyak dan Morfisme yang
berarti bentuk. Dalam ilmu sains, Polimorfisme (polymorphism) adalah sebuah
prinsip dalam biologi di mana organisme atau spesies memiliki banyak bentuk
serta tahapan (stages). Prinsip tersebut diterapkan juga pada bahasa Java.
Polimorfisme dalam OOP merupakan sebuah konsep OOP di mana class memiliki
banyak “bentuk” method yang berbeda, meskipun namanya sama. Maksud dari
“bentuk” adalah isinya yang berbeda, namun tipe data dan parameternya berbeda.
Polimorfisme juga dapat diartikan sebagai teknik programming yang mengarahkan kamu untuk memprogram secara general daripada secara spesifik. Contohnya kita memiliki tiga class yang berbeda yaitu: “Kelinci”, “Kucing”, dan “Sapi”. Di mana ketiga class tersebut merupakan turunan dari class “Hewan”.
Polimorfisme
pada Java memiliki 2 macam yaitu diantaranya:
- Static Polymorphism (Polimorfisme statis).
- Dynamic Polymorphism (Polimorfisme dinamis).
Perbedaan
keduanya terletak pada cara membuat polimorfisme. Polimorfisme statis
menggunakan method overloading, sedangkan polimorfisme dinamis menggunakan
method overriding.
Pengertian Overloading
Overloading Merupakan Suatu Function yang memiliki parameter , dan function tersebut dapat memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah parameter mesti berbedaAtau bisa kita bilang Situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/utau jenis return value.
Lebih
Jelasnya Overloading secara singkat :
- Nama Method
Boleh Sama , Tapi Jumlah Parameter Mesti berbeda
- Nilai Yang
Di Return Harus memiliki Tipe yang sama
Overriding
Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita bilang
memodifikasi atau memperluas data dan method pada kelas induk
Keuntungan
Ketika Overriding Method:
Terdapat
keuntungan ketika meng-override method yaitu super class selaku pemilik
overriden method, kodenya tidak perlu mengalami perubahan sama sekali,
sementara itu di sisi lainnya sub class dapat mengimplementasikan kode tersebut
sesuai dengan kebutuhan.
Bisa
dibayangkan jika suatu superclass memiliki banyak subclass. Ketika sub class –
sub class tersebut perlu untuk menggunakan method dari super class, mereka
dapat menggunakannya karena sub class dapat menggunakan method super class pada
konsep inheritance.
Dan jika
mereka perlu mengimplementasikannya dengan berbeda mereka tinggal meng-override
method dari super class tanpa sama sekali menyentuh kode method dari super
class.
Perbedaan Polimorfisme
dengan Inheritance
Polimorfisme,
suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari
hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan terhadap pesan
yang sama sesuai dengan sifat masing-masing obyek. Sedangkan Inheritance merupakan
ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama.
Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat
sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan).
Perbedaan overloading dengan overriding
Diantara
kedua method tersebut terdapat beberapa perbedaan, diantaranya adalah:
1.) Dalam
method overloading, jumlah dan tipe parameter (termasuk urutannya) atau disebut
dengan istilah method signature mengalami perubahan, sedangkan pada method
overriding tidak berubah atau tetap.
2.) Method
overloading dapat dilakukan pada class yang sama, namun overriding hanya dapat
dilakukan pada subclass dengan signature yang sama dan tipe return yang sama.
Sedangkan pada overloading, tipe return ini bisa sama atau berbeda.
3.) Method private, final atau static tidak
bisa di overrride, namun method tersebut bisa overloading. Artinya suatu class
dapat memiliki lebih dari satu method private, final atau static dengan
nama yang sama, namun sub class tidak dapat meng-override private, final atau static method
tersebut dari super class.
4.)
Method overloading pada Java terikat oleh static binding sedangkan
method overriding merupakan subjek dari dynamic binding.
5.)
Method overloading terjadi pada saat compile time sedangkan
overriding terjadi pada waktu runtime.