Apa perbedaan antara overloading metode dan menimpanya di Jawa?
Apakah ada perbedaan dalam tanda tangan metode, penentu akses, tipe pengembalian, dll.?
java
object-oriented
pengguna63948
sumber
sumber
Jawaban:
Untuk membebani metode dengan metode baru, metode baru harus memiliki tanda tangan yang berbeda. Yaitu dua metode kelebihan beban memiliki nama yang sama, tetapi parameter yang berbeda. Berikut adalah contoh dari dua metode kelebihan beban:
Berdasarkan pada jenis parameter, metode yang sesuai akan dipanggil. Perhatikan bahwa mengubah jenis pengembalian tidak cukup (meskipun Anda juga dapat melakukan ini).
Ketika metode diganti, maka metode baru memiliki tanda tangan yang sama dan menggantikan metode yang diganti dalam beberapa kasus. Berikut adalah contoh metode yang diganti:
Pilihan dibuat berdasarkan jenis objek. Sebagai contoh,
akan memanggil
someMethod
dariB
. Anda dapat (dan harus) menambahkan anotasi @Override:Sekarang, jika Anda secara tidak sengaja mengubah parameter dalam B, kompiler akan memberi tahu Anda, bahwa Anda tidak mengesampingkan beberapa Metode () tetapi membebani secara berlebihan.
sumber
Overloading, metode memiliki nama yang sama tetapi parameter yang berbeda.
Overriding, implementasi yang diberikan di kelas dasar diganti dengan yang ada di sub kelas.
sumber
Konsep yang Anda tanyakan tercakup dalam tutorial Java.
Penjelasan untuk penggantian diberikan sebagai berikut:
Kelebihan dijelaskan dalam tutorial sebagai berikut:
Penjelasan di atas untuk kelebihan beban menyebutkan kualifikasi yang dibahas dalam pelajaran berjudul "Interfaces and Inheritance" :
sumber
Kelebihan metode biasanya didefinisikan sebagai "menyediakan beberapa metode yang tersedia dengan nama yang sama, berbeda dengan jumlah dan jenis input dan output". Konsepnya biasanya bahwa Anda ingin dapat melakukan operasi dasar yang sama dengan berbagai set input: Anda dapat, misalnya, "menambahkan" dua nilai tipe numerik, namun biasanya penting untuk mengetahui jenis persisnya nilainya agar Anda dapat memanfaatkan atau merencanakan perilaku spesifik dari jenis itu. Dengan demikian, Anda akan menentukan metode untuk setiap kombinasi tipe numerik (dan atau koleksi) yang ingin Anda dukung. Semua metode ini memiliki nama yang sama, tetapi "tanda tangan" berbeda; pada waktu kompilasi,
Mengganti metode biasanya didefinisikan sebagai "menyediakan implementasi yang berbeda di kelas turunan dari metode dengan tanda tangan tertentu yang didefinisikan di kelas dasar". Ada banyak alasan untuk mengganti metode; hampir semuanya memiliki kesamaan bahwa kelas turunan memiliki pengetahuan tambahan tentang apa yang harus dilakukan, yang tidak dapat diketahui oleh kelas dasar. Ada dua rasa override dalam sebagian besar bahasa OO; overriding dapat menggantikan metode kelas dasar, atau dapat diperluasmetode kelas dasar. Perbedaannya adalah biasanya bahwa kelas turunan yang memperluas implementasi kelas dasar akan memanggil versi override dari kelas dasar dari metode di beberapa titik selama pelaksanaan metode overriding. Hal ini memungkinkan kelas utama untuk "menggunakan kembali" area umum dari operasi yang terkandung dalam kelas dasar.
sumber