Banyak siswa bodoh dan tidak bisa membedakan antara kelebihan beban dan override. Dianjurkan untuk tidak menghafal pengetahuan konseptual dengan mengacaukan, tetapi untuk memahami dan menghafalnya.
Izinkan saya memberikan definisi saya:
Pertama, mari kita bicarakan: kelebihan beban
(1) Overloading metode adalah sarana untuk membiarkan kelas memproses berbagai jenis data dengan cara yang disatukan. Berbagai fungsi dengan nama yang sama ada pada saat yang sama, dengan parameter/jenis yang berbeda. Kelebihan beban adalah manifestasi polimorfisme dalam suatu kelas.
(2) Overloading metode Java berarti bahwa beberapa metode dapat dibuat di kelas, mereka memiliki nama yang sama, tetapi memiliki parameter yang berbeda dan definisi yang berbeda. Saat metode panggilan, kami memutuskan metode mana yang akan digunakan dengan jumlah parameter dan jenis parameter yang berbeda yang diteruskan kepada mereka. Ini adalah polimorfisme.
(3) Saat kelebihan beban, nama metode harus sama, tetapi jenis dan angka parameter berbeda, dan tipe nilai pengembalian dapat sama atau berbeda. Jenis pengembalian tidak dapat digunakan sebagai kriteria perbedaan untuk fungsi kelebihan beban.
Pertama -tama mari kita lihat contoh kelebihan beban:
kelas publik overloadparent {public string getPerson (nama string) {return "Persona" + name; } public String getperson (int usia) {return "personb"; } public string getperson (nama string, int usia) {return "personc"; } public void getPerson (nama string) {System.out.println ("Am I Overloaded Method?"); }} kelas publik OverloadChildExtends OverloadParent {public void getPerson (uang ganda) {System.out.println ("adalah saya metode yang kelebihan beban"); }}Perhatikan pengamatan:
(1) Ada 4 metode dengan nama yang sama di OverloadParent
(2) Jenis parameter dan jumlah dari tiga metode pertama tidak konsisten, dan nilai pengembaliannya sama, yang merupakan kelebihan beban
(3) Metode 4 dan Metode 1 Hanya nilai pengembalian yang berbeda, dan tidak merupakan kelebihan beban, dan kompiler tidak lewat.
PS: Nilai pengembalian adalah hasil dari eksekusi metode. Ketika kami memanggil metode ini, kami tidak akan menentukan "Saya ingin memanggil metode dengan nilai pengembalian tipe XXX", itu tidak akan menjadi fitur kelebihan metode.
(4) Demo mewarisi overloadparent, dan memiliki semua metode yang dimiliki dalam demo. Rasanya metode yang ada tidak dapat memenuhi kebutuhan, sehingga hanya kelebihan beban.
Bendera yang kelebihan beban: Nama metode sama, parameter berbeda (angka atau jenis), dan tidak ada hubungannya dengan nilai pengembalian.
Lalu mari kita bicara tentang overriding (utama)
(1) Polimorfisme antara kelas induk dan kelas anak mendefinisikan kembali fungsi kelas induk. Jika metode yang didefinisikan dalam subclass memiliki nama dan parameter yang sama dengan kelas induknya, kami mengatakan bahwa metode tersebut menjadi utama. Di Java, subclass dapat mewarisi metode dari kelas induk tanpa menulis ulang metode yang sama.
Tetapi kadang -kadang subclass tidak ingin mewarisi metode kelas induk utuh, tetapi ingin membuat modifikasi tertentu, yang membutuhkan penulisan ulang metode.
Metode penulisan ulang juga disebut metode timpa.
(2) Jika metode dalam subclass memiliki nama metode yang sama, tipe pengembalian dan tabel parameter sebagai metode di kelas induk, metode baru akan mengganti metode asli.
Jika Anda memerlukan metode asli di kelas induk, Anda dapat menggunakan kata kunci super, yang mengacu pada kelas induk dari kelas saat ini.
(3) izin modifikasi akses dari fungsi subkelas tidak boleh lebih kecil dari pada kelas induk;
Mari kita lihat contoh overwriting:
Public Class OverdeParent {public void fly () {System.out.println ("Ican Fly!"); }} Public Class OverderChild memperluas overrideParent {@Override public void fly () {System.out.println ("ican't fly, tapi saya bisa lari!"); } public static vid main (string [] args) {overwriteparent child = new overwritechild (); child.fly (); }}Apa yang akan menjadi output saat menjalankan metode utama OverderChild?
Jawabannya adalah: Saya tidak bisa, tetapi saya bisa berlari!
Kami melihat:
(1) OverderChild dan Overideparent memiliki metode lalat
(2) Nilai pengembalian dan pengubah lalat adalah sama, hanya tubuh metode yang berbeda
(3) Ada anotasi @Overwrite sebelum metode terbang subkelas. JDK1.5 muncul dan hanya digunakan untuk warisan kelas. 1.6 dapat digunakan untuk implementasi antarmuka. Anotasi ini membantu pemeriksaan kompiler, dan tidak apa -apa untuk tidak menambahkannya.
Bendera yang ditimpa : Anak mewarisi kelas induk dan memiliki implementasi yang berbeda untuk metode yang sama.
Skenario Aplikasi
Overload: Ketika fungsi metode serupa, tetapi parameter yang berbeda perlu dilewati.
Override: Ketika subclass memiliki perilaku uniknya sendiri, ia mewarisi dari kelas induk dan tidak dapat memenuhi kebutuhannya sendiri.
PS: Overloading dan Onchriting keduanya manifestasi dari polimorfisme. Yang pertama adalah polimorfisme kompiler, sedangkan yang terakhir adalah polimorfisme runtime.
Aturan untuk metode penulisan ulang:
1. Daftar parameter harus persis sama dengan metode yang ditulis ulang, jika tidak tidak dapat disebut penulisan ulang tetapi kelebihan beban.
2. Tipe yang dikembalikan harus selalu sama dengan jenis pengembalian dari metode yang ditimpa, jika tidak itu tidak dapat disebut penulisan ulang tetapi kelebihan beban.
3. Batas pengubah akses harus lebih besar dari pengubah akses dari metode penulisan ulang (publik> dilindungi> Default> Private)
4. Metode penulisan ulang tidak boleh melempar pengecualian cek baru atau pengecualian yang diperiksa secara luas daripada deklarasi metode penulisan ulang. Misalnya:
Metode kelas induk menyatakan pengecualian memeriksa ioException. Saat menulis ulang metode ini, Anda tidak dapat melempar pengecualian, Anda hanya dapat melemparkan pengecualian subkelas dari IoException, dan Anda dapat melempar pengecualian yang tidak memeriksa.
Dan aturan untuk kelebihan beban:
1. Harus memiliki daftar parameter yang berbeda;
2. Mungkin ada tipe pengembalian yang tidak memarahi Anda, selama daftar parameter berbeda;
3. Mungkin ada pengubah akses yang berbeda;
4. Pengecualian yang berbeda dapat dilemparkan;
Perbedaan antara penulisan ulang dan kelebihan beban adalah:
Menulis ulang polimorfisme berfungsi, menyebut metode yang kelebihan beban dapat sangat mengurangi jumlah input kode. Selama nama metode yang sama melewati parameter yang berbeda ke dalamnya, ia dapat memiliki fungsi yang berbeda atau nilai pengembalian.
Jika Anda menggunakan penulisan ulang dan kelebihan beban dengan baik, Anda dapat merancang kelas dengan struktur yang jelas dan ringkas. Dapat dikatakan bahwa peran penulisan ulang dan kelebihan beban dalam proses menulis kode luar biasa.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.