Inheritance and Overloading methods with different argument data types in Java
When I was analyzing a simple java code related with overloading and inheritance I expected to recieve an output that overloads matching the argument's data types. But it doesn't work that way. Code: class A { public int calc (double num){ System.out.println("calc A"); return (int)(num+1);} } class B extends A{ public int calc (long num){ System.out.println("calc B"); return (int)(num+2);} } class C extends B{ public int calc (int num){ System.out.println("calc C"); return num+3;} } class D extends C{ public int calc (float num){ System.out.println("calc D"); return (int)(num+4);} } class