Mengatasi lwn Melebihi
Kaedah Overriding dan kaedah Overloading ialah dua konsep/teknik/ciri yang terdapat dalam beberapa bahasa pengaturcaraan. Kedua-dua konsep membenarkan pengaturcara menyediakan pelaksanaan yang berbeza untuk kaedah dengan nama yang sama. Kaedah mengatasi membolehkan pengaturcara menyediakan pelaksanaan alternatif dalam sub kelas kepada kaedah yang telah ditakrifkan dalam kelas supernya. Kelebihan kaedah membolehkan pengaturcara menyediakan pelaksanaan berbeza kepada berbilang kaedah dengan nama yang sama (dalam kelas yang sama).
Apakah yang Mengatasi?
Seperti yang dinyatakan di atas, kelas boleh melanjutkan kelas super atau kelas induk, dalam bahasa pengaturcaraan berorientasikan objek. Kelas kanak-kanak boleh mempunyai kaedahnya sendiri atau secara pilihan boleh mempunyai pelaksanaan sendiri kepada kaedah yang telah ditakrifkan dalam kelas induknya (atau salah satu kelas induknya). Jadi apabila yang terakhir berlaku, ia dipanggil kaedah overriding. Dalam erti kata lain, jika kelas anak menyediakan pelaksanaan kepada kaedah dengan tandatangan dan jenis pulangan yang sama seperti kaedah yang telah ditakrifkan dalam salah satu kelas induknya, kaedah itu dikatakan akan diganti (digantikan) oleh pelaksanaan kelas anak.. Jadi, jika terdapat kaedah yang diganti dalam kelas, sistem runtime perlu memutuskan pelaksanaan kaedah mana yang digunakan. Isu ini diselesaikan dengan melihat jenis objek tepat yang digunakan untuk memanggilnya. Jika objek kelas induk digunakan untuk memanggil kaedah yang diganti, maka pelaksanaan dalam kelas induk digunakan. Begitu juga, jika ia adalah objek kelas kanak-kanak yang digunakan, maka pelaksanaan kelas kanak-kanak digunakan. Bahasa pengaturcaraan moden seperti Java, Eifell, C++ dan Python membenarkan kaedah mengatasi.
Apakah itu Lebih Muatan?
Pembebanan kaedah ialah ciri yang disediakan oleh sesetengah bahasa pengaturcaraan untuk mencipta lebih daripada satu kaedah dengan nama yang sama, tetapi dengan jenis input dan output yang berbeza. Dalam bahasa pengaturcaraan moden seperti Java, C, C++ dan VB. NET, ciri ini tersedia. Anda boleh membebankan kaedah dengan mencipta kaedah lain dengan nama yang sama tetapi dengan tandatangan kaedah yang berbeza atau jenis pulangan yang berbeza (atau kedua-duanya). Sebagai contoh, jika anda mempunyai kaedah1(jenis1 t1) dan kaedah1(jenis2 t2) di dalam kelas yang sama, maka ia terlebih beban. Kemudian sistem perlu memutuskan yang mana satu untuk dilaksanakan apabila ia dipanggil. Pembezaan ini dibuat dengan melihat jenis parameter yang telah dihantar ke kaedah. Jika hujah adalah jenis1, maka pelaksanaan pertama dipanggil, manakala jika ia daripada jenis2, maka pelaksanaan kedua dipanggil.
Apakah perbezaan antara Overriding dan Overloading?
Walaupun, overriding kaedah dan kaedah overloading digunakan untuk menyediakan kaedah dengan pelaksanaan yang berbeza, terdapat perbezaan utama antara kedua-dua konsep/teknik ini. Pertama sekali, subjek overriding kaedah sentiasa berada dalam kelas yang berbeza, manakala subjek overloading kaedah kekal dalam kelas yang sama. Ini bermakna overriding hanya boleh dilakukan dalam bahasa pengaturcaraan berorientasikan objek yang membenarkan pewarisan, manakala lebihan muatan juga boleh didapati dalam bahasa bukan berorientasikan objek. Dalam erti kata lain, anda mengatasi kaedah dalam kelas super tetapi anda melebihkan kaedah dalam kelas anda sendiri.
Perbezaan lain ialah kaedah yang ditindih mempunyai nama kaedah yang sama, tandatangan kaedah dan jenis pemulangan, tetapi kaedah terlebih beban mesti berbeza sama ada dalam tandatangan atau jenis pemulangan (nama mestilah sama). Untuk membezakan antara dua kaedah yang ditindih, jenis objek yang tepat yang digunakan untuk menggunakan kaedah id yang digunakan, manakala untuk membezakan antara dua kaedah terlebih beban, jenis parameter digunakan. Satu lagi perbezaan utama ialah lebihan beban diselesaikan pada masa penyusunan, manakala mengatasi diselesaikan pada masa jalan.