Perbezaan Antara Overriding dan Overloading

Anonim

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 yang mengutamakan membolehkan pemrogram 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 itu Overriding?

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 opsyennya mempunyai pelaksanaannya sendiri terhadap kaedah yang telah ditakrifkan dalam kelas induknya (atau salah satu kelas induknya). Oleh itu, apabila terjadi yang terakhir, 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 ditentukan dalam salah satu kelas induknya, kaedah tersebut dikatakan digantikan (digantikan) 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 adalah 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?

Kaedah muatan 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. BERSIH, 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 dibuat dengan melihat jenis parameter yang telah diluluskan kepada kaedah. Jika hujah adalah jenis1, maka pelaksanaan pertama dipanggil, sementara jika ia adalah type2, maka pelaksanaan kedua dipanggil.

Apakah perbezaan di antara Overriding and Overloading?

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

Perbezaan lain ialah kaedah yang telah ditarik balik 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 digunakan untuk menggunakan kaedah kaedah yang digunakan, sedangkan untuk membezakan antara dua kaedah yang dilebih-lebihkan jenis parameter yang digunakan. Perbezaan utama lain ialah beban muatan diselesaikan pada masa penyusunan, sementara perincian diselesaikan pada masa runtime.