[Java lista] override vs overload

Suller András suan2 at freemail.hu
2008. Már. 12., Sze, 12:19:09 CET


Ez nem fog működni, mert a fordító nem tudja, hogy melyik metódust kéne 
meghívni:
Child c = new Child();
c.test("Goodbye", "blue", "monday"); //The method test(String, String, 
Object) is ambiguous for the type Child

Tehát ha lenne "very late binding", akkor ez a hiba futásidőben jönne 
elő, ami nem lenne túl szerencsés. Az más kérdés, hogy aki ezt a 3 
metódust így megírja, az miért akarná a fent leírt módon meghívni?

Üdv,
psmith

Zsombor írta:
>
>
>
> Szerintem elég zavaros, sőt eldönthetetlen esetekhez vezetne. Pl a 
> következő példa esetében:
>
>
> public class Parent {
>
>     public void test(Object a, Object b, Object c) {
>
>         System.out.println("Parent.test(Object o)");
>
>     }
>
> }
>
> public class Child extends Parent {
>
>     public void test(String a, String b, Object c) {
>
>         System.out.println("string-string-object");
>
>     }
>
>     public void test(Object a, String b, String c) {
>
>         System.out.println("object-string-string");
>
>     }
>
>
>     public void test(String a, Object b, String c) {
>
>         System.out.println("string-object-string");
>
>     }
>
> }
>
>
>
> esetében egy test("Goodbye", "blue", "monday") hivás még a legöregebb 
> tengerészeket is gondolkodásra késztetné :)
>
> üdv
>
>  Zs


További információk a(z) Javalist levelezőlistáról