Pemuatan Terlebih Kaedah dan Penentuan Jenis Parameter
Dalam Java, lebihan kaedah membenarkan takrifan berbilang kaedah dengan nama yang sama tetapi tandatangan berbeza. Apabila kaedah dipanggil, pelaksanaan khusus yang akan digunakan ditentukan pada masa penyusunan berdasarkan jenis parameter kaedah yang diisytiharkan.
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penentuan ini dibuat hanya berdasarkan yang diisytiharkan. jenis, bukan jenis masa jalan sebenar bagi argumen yang dihantar kepada kaedah. Tingkah laku ini berbeza dengan bahasa pengaturcaraan tertentu, di mana jenis masa jalan sebenar dipertimbangkan semasa pemilihan kaedah.
Untuk menggambarkan konsep ini, pertimbangkan kod berikut:
interface Callee { public void foo(Object o); public void foo(String s); public void foo(Integer i); } class CalleeImpl implements Callee public void foo(Object o) { logger.debug("foo(Object o)"); } public void foo(String s) { logger.debug("foo(\"" + s + "\")"); } public void foo(Integer i) { logger.debug("foo(" + i + ")"); } } Callee callee = new CalleeImpl(); Object i = new Integer(12); Object s = "foobar"; Object o = new Object(); callee.foo(i); callee.foo(s); callee.foo(o);
Dalam contoh ini, walaupun i ialah objek Integer, panggilan ke callee.foo(i) akan menggunakan kaedah foo(Objek o) kerana jenis parameter yang diisytiharkan bagi kaedah itu ialah Objek. Begitu juga, panggilan ke callee.foo(s) dan callee.foo(o) akan menggunakan kaedah foo(String s) dan foo(Objek o) masing-masing.
Pemilihan Kaedah Boleh Pertimbangkan Parameter Sebenar Jenis?
Spesifikasi bahasa Java secara eksplisit menyatakan bahawa proses pemilihan kaedah hanya mempertimbangkan jenis masa kompilasi bagi argumen, bukan jenis masa jalan sebenar mereka. Oleh itu, adalah tidak mungkin untuk mengubah suai kod yang diberikan dalam soalan untuk mencapai tingkah laku yang diingini di mana kaedah digunakan berdasarkan jenis masa jalan sebenar parameter.
Atas ialah kandungan terperinci Adakah Pemuatan Lebihan Kaedah Java Pertimbangkan Jenis Parameter Masa Jalan untuk Pemilihan Kaedah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!