Masalah ni memang sakit kepala, tak kira macam mana pun awak cakap
Pandangan 1: Tiga unsur polimorfisme, 1, 2, 3
Jadi beban berlebihan bukanlah polimorfisme
Pandangan 2:
Disebut dalam buku Java Virtual Machine
Beberapa manifestasi paling asas bagi ciri polimorfisme, seperti "lebih muatan" dan "penulisan semula" Bahagian 8.1
Ini bermakna pembebanan dan penulisan semula adalah kedua-dua manifestasi polimorfisme
Bagaimana anda faham
Setiap buku diterjemahkan secara berbeza, sebaiknya nyatakan istilah Inggeris, sama ada Override atau Overload.
Override ialah manifestasi polimorfisme (cth.
bukanlah (cth.@Override public String toString() {...}
), tetapi@Override public String toString() {...}
),但Overload不是(例如PrintStream.println()
和PrintStream.println(String s)
OverridePrintStream.println() kod > dan
PrintStream.println(String s)
). 🎜Malah, terdapat tiga persamaan bahasa Inggeris bagi "overload" bahasa Cina: override, overload dan overwrite Kemudian, yang terakhir diterjemahkan secara beransur-ansur kepada "rewrite" atau "rewrite".
Override merujuk kepada amalan mentakrifkan semula fungsi kelas induk dengan tandatangan yang sama Dalam kes ini, fungsi kelas induk dan fungsi kelas anak adalah entiti bebas. Tetapi apabila memanggil, pengkompil (atau jurubahasa) boleh menentukan pelaksanaan yang hendak dipanggil berdasarkan jenis objek sebenar.
lebihan merujuk kepada berbilang pelaksanaan nama fungsi yang sama yang tidak boleh ditandatangani. Dalam kes ini, nama fungsi yang sama selalunya boleh dipanggil dengan jenis parameter yang berbeza untuk menghasilkan hasil yang berbeza Contoh biasa ialah
max(int, int)
和max(double, double)
dsb.Tulis ganti biasanya ialah penulisan semula fungsi dengan tandatangan kelas induk yang sama oleh subkelas Tanda tangan kedua-dua fungsi adalah sama, tetapi ia tiada kaitan antara satu sama lain. Dalam kes ini, jenis kelas induk merujuk kepada objek subkelas dan kaedah panggilan ialah kaedah kelas induk yang dipanggil (perhatikan perbezaan dengan timpa)
Mengenai perbezaan antara tulis ganti dan ganti, seperti yang ditunjukkan di bawah
Sekarang mari kita bercakap tentang polimorfisme. Mari kita lihat dulu definisi polimorfisme:
Polymorphism merujuk kepada entiti yang sama yang mempunyai pelbagai bentuk pada masa yang sama. (Muzik Bing)
Polymorphism secara literal bermaksud "berbilang keadaan". Dalam bahasa berorientasikan objek, pelbagai pelaksanaan berbeza antara muka dipanggil polimorfisme. (Ensiklopedia Baidu)
Dari definisi, "lebih muatan" tidak ada kaitan dengan polimorfisme, tetapi lebihan muatan ialah satu bentuk polimorfisme yang lain termasuk antara muka, abstraksi, fungsi maya, templat, generik..., dan kemudian dari Baidu Beberapa petikan daripada ensiklopedia.
Mungkin terdapat ralat terjemahan Polimorfisme bermakna objek menunjukkan ciri yang berbeza dalam konteks yang berbeza Contohnya, anak subkelas mewarisi induk kelas induk, dan kaedah baharu ditambahkan pada kelas Anak, simpan . Juga gunakan terus Child child1=new Child(), objek child1 boleh memanggil kaedah simpan dan log masuk, gunakan Parent child2 = new Child(), objek child2 hanya boleh menggunakan kaedah log masuk. Jadi ia bergantung kepada konteks.