Perbedaan Antara Metode Overloading dan Overriding di Java – Dalam tutorial ini kita akan membahas perbedaan antara overloading dan overriding di Java.
Perbedaan Antara Metode Overloading dan Overriding di Java
freeprogrammingresources – Jika Anda baru mengenal istilah ini, lihat posting berikut:
Overloading vs Overriding di Jawa
- Overloading terjadi pada waktu kompilasi sementara Overriding terjadi saat runtime : Pengikatan panggilan metode yang kelebihan beban ke definisinya telah terjadi pada waktu kompilasi namun pengikatan panggilan metode yang diganti ke definisinya terjadi saat runtime.
- Metode statis dapat kelebihan beban yang berarti kelas dapat memiliki lebih dari satu metode statis dengan nama yang sama. Metode statis tidak dapat diganti, bahkan jika Anda mendeklarasikan metode statis yang sama di kelas anak, itu tidak ada hubungannya dengan metode kelas induk yang sama.
- Perbedaan paling mendasar adalah bahwa overloading sedang dilakukan di kelas yang sama sedangkan untuk kelas dasar dan anak utama diperlukan. Overriding adalah tentang memberikan implementasi spesifik ke metode yang diwarisi dari kelas induk.
- Pengikatan statis digunakan untuk metode kelebihan beban dan ikatan dinamis digunakan untuk metode penggantian/penggantian.
- Performa: Overloading memberikan performa yang lebih baik dibandingkan overriding. Alasannya adalah bahwa pengikatan metode yang diganti sedang dilakukan saat runtime.
metode pribadi dan final dapat kelebihan beban tetapi tidak dapat diganti. Ini berarti sebuah kelas dapat memiliki lebih dari satu metode pribadi/final dengan nama yang sama tetapi kelas anak tidak dapat mengesampingkan metode pribadi/akhir dari kelas dasar mereka. - Jenis metode yang dikembalikan tidak masalah jika terjadi kelebihan metode, bisa sama atau berbeda. Namun dalam kasus penggantian metode, metode penggantian dapat memiliki tipe pengembalian yang lebih spesifik ( lihat ini ).
Daftar argumen harus berbeda saat melakukan metode overloading. Daftar argumen harus sama dalam metode Overriding.
Metode Overloading di Java
Metode Overloading adalah fitur yang memungkinkan kelas memiliki lebih dari satu metode yang memiliki nama yang sama, jika daftar argumennya berbeda. Hal ini mirip dengan overloading konstruktor di Java, yang memungkinkan kelas memiliki lebih dari satu konstruktor yang memiliki daftar argumen yang berbeda.
Baca Juga : Struktur Data Penting yang Harus Dipelajari Pemrogram Java
mari kita kembali ke intinya, ketika saya mengatakan daftar argumen itu berarti parameter yang dimiliki suatu metode: Misalnya daftar argumen metode add(int a, int b) memiliki dua parameter berbeda dari daftar argumen metode add (int a, int b, int c) memiliki tiga parameter.
Untuk membebani metode, daftar argumen metode harus berbeda dalam salah satu dari ini:
1. Jumlah parameter.
Misalnya: Ini adalah kasus kelebihan beban yang valid
tambahkan(int, int)( int , int )
tambahkan(int, int, int)( int , int , int )
2. Tipe data parameter.
Sebagai contoh:
tambahkan(int, int)( int , int )
tambahkan (int, mengambang)( int , mengambang )
3. Urutan Jenis data parameter.
Sebagai contoh:
tambahkan (int, mengambang)( int , mengambang )
tambahkan (mengambang, int)( pelampung , int )
Kasus kelebihan metode yang tidak valid: Ketika saya mengatakan daftar argumen, saya tidak berbicara tentang jenis pengembalian metode, misalnya jika dua metode memiliki nama yang sama, parameter yang sama dan jenis pengembalian yang berbeda, maka ini bukan contoh metode kelebihan beban yang valid. Ini akan menimbulkan kesalahan kompilasi.
int tambah(int, int)tambahkan ( int , int )
float tambahkan (int, int)float tambahkan ( int , int )
Metode overloading adalah contoh dari Polimorfisme Statis . Kami akan membahas polimorfisme dan jenisnya dalam tutorial terpisah.
Hal-hal yang Perlu Diperhatikan:
1. Polimorfisme Statis juga dikenal sebagai pengikatan waktu kompilasi atau pengikatan awal.
2. Pengikatan statis terjadi pada waktu kompilasi. Kelebihan metode adalah contoh pengikatan statis di mana pengikatan pemanggilan metode ke definisinya terjadi pada waktu Kompilasi.
Contoh metode Overloading
Seperti yang dibahas di awal panduan ini, metode overloading dilakukan dengan mendeklarasikan metode yang sama dengan parameter yang berbeda. Parameter harus berbeda dalam salah satu dari ini: nomor, urutan atau jenis parameter (atau argumen). Mari kita lihat contoh dari masing-masing kasus ini.
Overloading – Jumlah parameter yang berbeda dalam daftar argumen
Contoh ini menunjukkan bagaimana metode overloading dilakukan dengan memiliki jumlah parameter yang berbeda. Dalam contoh di atas – metode disp()kelebihan beban berdasarkan jumlah parameter – Kami memiliki dua metode dengan nama disptetapi parameter yang mereka miliki berbeda. Keduanya memiliki jumlah parameter yang berbeda.
Overloading – Perbedaan tipe data parameter
Dalam contoh ini, metode disp() kelebihan beban berdasarkan tipe data parameter – Kami memiliki dua metode dengan nama disp(), satu dengan parameter tipe char dan metode lain dengan parameter tipe int.
Overloading – Urutan tipe data argumen
Di sini metode disp()kelebihan beban berdasarkan urutan tipe data parameter – Kedua metode memiliki urutan tipe data yang berbeda dalam daftar argumen. Metode pertama adalah memiliki daftar argumen sebagai (char, int) dan kedua memiliki (int, char). Karena urutannya berbeda, metode ini dapat kelebihan beban tanpa masalah.
Metode Overloading dan Jenis Promosi
Ketika tipe data dengan ukuran lebih kecil dipromosikan ke tipe data dengan ukuran lebih besar dari ini disebut promosi tipe, misalnya: tipe data byte dapat dipromosikan menjadi pendek, tipe data pendek dapat dipromosikan menjadi int, panjang, ganda dll.
Apa hubungannya dengan metode overloading?
Yah, sangat penting untuk memahami jenis promosi jika tidak Anda akan berpikir bahwa program akan menimbulkan kesalahan kompilasi tetapi sebenarnya program itu akan berjalan dengan baik karena jenis promosi.
Mari kita ambil contoh untuk melihat apa yang saya bicarakan di sini: Seperti yang Anda lihat bahwa saya telah melewati nilai float saat memanggil metode disp() tetapi dipromosikan ke tipe ganda karena tidak ada metode dengan daftar argumen sebagai (int, float)
Tetapi promosi jenis ini tidak selalu terjadi, mari kita lihat contoh lain: Seperti yang Anda lihat bahwa promosi tipe kali ini tidak terjadi karena ada metode dengan tipe argumen yang cocok.
Tipe tabel Promosi:
Tipe data di sisi kiri dapat dipromosikan ke tipe data apa pun yang ada di sisi kanannya.
Metode override di java
Mendeklarasikan metode di sub kelas yang sudah ada di kelas induk dikenal sebagai metode overriding. Overriding dilakukan agar kelas anak dapat memberikan implementasinya sendiri ke metode yang sudah disediakan oleh kelas induk. Dalam hal ini metode di kelas induk disebut metode override dan metode di kelas anak disebut metode override. Dalam panduan ini, kita akan melihat apa itu metode overriding di Java dan mengapa kita menggunakannya.
Contoh Overriding Metode
Mari kita ambil contoh sederhana untuk memahami ini. Kami memiliki dua kelas: Kelas anak Laki-laki dan kelas induk Manusia. Kelas Boymemperluas Humankelas. Kedua kelas memiliki metode yang sama void eat(). Boy class memberikan implementasinya sendiri pada eat()method atau dengan kata lain meng-override eat()method.
Tujuan dari Metode Overriding jelas di sini. Kelas anak ingin memberikan implementasinya sendiri sehingga ketika memanggil metode ini, ia mencetak Boy sedang makan bukan Manusia sedang makan.
Keuntungan dari metode override
Keuntungan utama dari metode overriding adalah bahwa kelas dapat memberikan implementasi spesifiknya sendiri ke metode yang diwarisi bahkan tanpa memodifikasi kode kelas induk .
Ini bermanfaat kala kelas mempunyai sebagian kelas anak, jadi bila kelas anak butuh memakai tata cara kelas induk, itu bisa memakainya serta kelas lain yang mau mempunyai implementasi yang berbeda bisa memakai fitur override buat membuat pergantian tanpa memegang kelas induk. kode.
Metode Overriding dan Pengiriman Metode Dinamis
Metode Overriding adalah contoh polimorfisme runtime . Ketika referensi kelas induk menunjuk ke objek kelas anak maka panggilan ke metode yang ditimpa ditentukan saat runtime, karena selama pemanggilan metode metode mana (kelas induk atau kelas anak) yang akan dieksekusi ditentukan oleh jenis objek. Proses di mana panggilan ke metode yang ditimpa diselesaikan saat runtime dikenal sebagai pengiriman metode dinamis. Mari kita lihat contoh untuk memahami ini:
Dalam contoh di atas, panggilan ke metode disp() menggunakan objek kedua (obj2) adalah polimorfisme runtime (atau pengiriman metode dinamis).
Catatan : Dalam pengiriman metode dinamis, objek dapat memanggil metode utama kelas anak dan semua metode kelas dasar yang tidak diganti tetapi tidak dapat memanggil metode yang baru dideklarasikan di kelas anak. Dalam contoh di atas objek obj2memanggil disp(). Namun jika Anda mencoba memanggil newMethod()metode (yang baru saja dideklarasikan di kelas Demo) menggunakan obj2 maka Anda akan memberikan kesalahan kompilasi dengan pesan berikut:
Aturan Overriding metode di Java
- Daftar argumen: Daftar argumen metode overriding (metode kelas anak) harus cocok dengan metode Overridden (metode kelas induk). Tipe data argumen dan urutannya harus sama persis.
- Access Modifier dari overriding method (method of subclass) tidak boleh lebih restriktif daripada metode override dari parent class. Misalnya jika Access Modifier dari parent class method adalah public maka overriding method (child class method ) tidak dapat memiliki Access modifier private, protected dan default, karena ketiga access modifier ini lebih restriktif daripada public.
- Misalnya Ini tidak diperbolehkan karena metode disp kelas anak lebih ketat (dilindungi) daripada kelas dasar (publik) Namun ini adalah skenario yang benar-benar valid karena publik tidak terlalu membatasi daripada yang dilindungi. Pengubah akses yang sama juga valid.
metode pribadi, statis dan final tidak dapat ditimpa karena bersifat lokal untuk kelas. Namun metode statis dapat dideklarasikan kembali di sub kelas, dalam hal ini metode sub-kelas akan bertindak berbeda dan tidak akan ada hubungannya dengan metode statis yang sama dari kelas induk. - Metode Overriding (metode kelas anak) dapat membuang pengecualian yang tidak dicentang , terlepas dari apakah metode yang diganti (metode kelas induk) melempar pengecualian atau tidak. Namun metode override tidak boleh membuang pengecualian yang diperiksa yang baru atau lebih luas dari yang dideklarasikan oleh metode yang diganti. Kami akan membahas ini secara rinci dengan contoh di tutorial yang akan datang.
- Pengikatan metode yang diganti terjadi saat runtime yang dikenal sebagai pengikatan dinamis .
- Jika suatu kelas memperluas kelas abstrak atau mengimplementasikan antarmuka , maka kelas itu harus menimpa semua metode abstrak kecuali kelas itu sendiri adalah kelas abstrak.