Perbezaan Antara Penggantian dan Kelebihan Beban

Overriding vs Overloading

Kaedah Overriding dan kaedah Overloading adalah dua konsep / teknik / ciri yang terdapat dalam beberapa bahasa pengaturcaraan. Kedua-dua konsep ini membenarkan pengaturcara menyediakan pelbagai pelaksanaan untuk kaedah dengan nama yang sama. Kaedah utama membolehkan pengaturcara untuk menyediakan pelaksanaan alternatif dalam kelas sub kepada kaedah yang telah ditakrifkan dalam kelas supernya. Kaedah muatan yang berlebihan membolehkan pengaturcara menyediakan pelaksanaan yang berlainan kepada pelbagai kaedah dengan nama yang sama (dalam kelas yang sama).

Apa yang Override?

Seperti yang dinyatakan di atas, kelas boleh memanjangkan kelas super atau kelas induk, dalam bahasa pengaturcaraan berorientasikan objek. Kelas kanak-kanak boleh mempunyai kaedah tersendiri atau secara opsyen boleh melaksanakannya sendiri ke kaedah yang telah ditentukan dalam kelas induknya (atau salah satu kelas induknya). Maka apabila yang terakhir terjadi, ia dipanggil kaedah utama. Dengan kata lain, jika kelas kanak-kanak menyediakan pelaksanaan kepada kaedah dengan tanda tangan dan jenis yang sama seperti kaedah yang telah ditetapkan dalam salah satu kelas induknya, kaedah tersebut dikatakan ditindih (diganti) oleh pelaksanaan kelas kanak-kanak . Oleh itu, jika ada kaedah yang diganti dalam kelas, sistem runtime perlu menentukan kaedah pelaksanaan mana yang digunakan. Isu ini diselesaikan dengan melihat jenis objek yang tepat untuk digunakan. Sekiranya objek kelas induk digunakan untuk menggunakan kaedah yang ditindas, maka pelaksanaan dalam kelas induk digunakan. Begitu juga, jika ia merupakan objek kelas kanak-kanak yang digunakan, maka pelaksanaan kelas kanak-kanak digunakan. Bahasa pengaturcaraan moden seperti Java, Eifell, C ++ dan Python membolehkan kaedah mengatasi.

Apa itu Overloading?

Cara overloading adalah ciri yang disediakan oleh beberapa bahasa pengaturcaraan untuk membuat 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 membuat kaedah lain dengan nama yang sama tetapi dengan kaedah tandatangan yang berbeza atau jenis pulangan yang berlainan (atau kedua-duanya). Sebagai contoh, jika anda mempunyai kaedah 1 (type1 t1) dan kaedah1 (type2 t2) di dalam kelas yang sama, maka mereka akan dilebihkan. Kemudian sistem perlu memutuskan siapa yang akan dilaksanakan apabila ia dipanggil. Pembezaan ini dilakukan dengan melihat jenis parameter yang telah diluluskan kepada kaedah. Jika hujah adalah jenis1, maka pelaksanaan pertama dipanggil, sementara jika jenis2, maka pelaksanaan kedua dipanggil.

Apakah perbezaan antara Overriding dan Overloading?

Walaupun kaedah override dan kaedah overloading digunakan untuk menyediakan satu kaedah dengan pelaksanaan yang berbeza, terdapat perbezaan utama antara kedua konsep / teknik ini. Pertama sekali, subjek kaedah mengatasi sentiasa berada dalam kelas yang berbeza, manakala subjek kaedah overloading berada dalam kelas yang sama. Itu bermakna utama hanya boleh dilakukan dalam bahasa pengaturcaraan berorientasikan objek yang membolehkan warisan, manakala muatan terlalu banyak boleh didapati dalam bahasa bukan berorientasikan objek juga. Dengan kata lain, anda mengatasi kaedah dalam kelas super tetapi anda melebihkan kaedah dalam kelas anda sendiri.

Perbezaan lain ialah kaedah yang telah diatasi mempunyai nama kaedah yang sama, tandatangan kaedah dan jenis pemulangan, tetapi kaedah yang berlebihan mestilah berbeza sama ada tanda tangan atau jenis pemulangan (nama harus sama). Untuk membezakan antara dua kaedah yang ditarik balik, jenis objek yang tepat yang digunakan untuk menggunakan kaedah kaedah yang digunakan, sedangkan untuk membezakan antara dua kaedah yang dilebih-lebihkan jenis parameter digunakan. Perbezaan utama lain ialah beban muatan diselesaikan pada masa penyusunan, sementara perincian diselesaikan pada masa runtime.