Sabtu, Mei 25, 2019

Apakah overloading dapat bekerja dengan inheritance?

Jika dimiliki fungsi pada base class dan sebuah fungsi dengan nama sama dalam derived class, dapatkah fungsi base class dipanggil dari derived object class? Pertanyaan ini akan dilakukan percobaan dengan menggunakan bahasa C++ berikut ini.

Hasil output dari kode program tersebut adalah:
f(double): 6.3
f(double): 6.6

Ketimbang hasil output yang dikeluarkan adalah:
f(int): 6
f(double): 6.6

Overloading tidak bekerja untuk derived class dalam bahasa pemrograman C++. Tidak terdapat overloading resolusi antara base dan derived. Compiler akan melihat ke dalam scope dari derived, mencari fungsi tunggal "double f(double)" dan memanggilnya. Pemanggilan tersebut tidak akan terganggu dengan (enclosing) scope dari Base. Pada C++, tidak terdapat overloading antara scope-scope derived class bukanlah exception menuju aturan umum.

Sekarang pertimbangkan hasil yang dikeluarkan menggunakan bahasa pemrograman Java:

Output:
f (int): 6
f (double): 6.6

Jadi, overloading Java dapat bekerja lintas scope yang berbeda dengan C++. Java compiler menentukan versi yang tepat dari method overloading untuk dieksekusi pada saat waktu kompilasi berdasarkan tipe dari argumen yang digunakan untuk memanggil method dan parameter dari method overloading dari kedua class yang diterima nilainya dari argumen yang digunakan dalam pemanggilan dan eksekusi method overloading.

Tahap akhir, pertimbangkan hasil output yang dihasilkan dari program C# berikut ini:

catatan: Console.ReadKey() digunakan untuk menghentikan console. Hal ini sama seperti getch pada C/C++.

output dari program adalah:
f(double) : 6.3
f(double):  6.6

Ketimbang hasil output yang keluar adalah:
f(int) : 6
f(double) : 6.6

Alasan pada bagian program ini adalah sama seperti pada C++. Seperti halnya C++, tidak terdapat overloading antara Base class dan Derived class. Pada C#, tidak terdapat overloading antar scope, derived class bukanlah exception yang menuju ke aturan umum. Hal ini sama seperti C++ karena C# dirancang untuk lebih dekat ke C++.





Tidak ada komentar:

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D

Footer Adsense