Methods

 1. Method overloading or Static binding or Early binding or Compile time binding or Compile time polymorphism or Static polymorphism. Method overloading is determined at compile time. The compiler decides, based on the compile time type of the parameters passed to a method call, which method having the given name should be invoked. Hence the basic binding. 

package main;

public class Main {
public static void main(String[] args) {
method(5, 8L);
}

public static boolean method(int i, long l) {
return true;
}

public static int method(int x, long y) {
return 5;
}
}
Yuxaridaki prosese side-effect call deyilir. Baxmayaraq ki, return type - lari muxtelifdir,
lakin method signature eyni oldugu ucun Java bawa duwe bimir ki hansi metodu cagirsin. 

*Maraqli case:
Metodlara parametre verilende lazim olduqda avtomatik yukseltme (promote) edir. 
package main;

public class Main {
public static void main(String[] args) {
byte b = 3;
method(b);
}

public static void method(short i) {
System.out.println("short");
}

public static void method(int i) {
System.out.println("int");
}

public static void method(long i) {
System.out.println("long");
}
}

package main;

public class Main {
public static void main(String[] args) {
char c = 3;
method(c);
}

public static void method(short i) {
System.out.println("short");
}

public static void method(int i) {
System.out.println("int");
}

public static void method(long i) {
System.out.println("long");
}
}

package main;

public class Main {
public static void main(String[] args) {
double f = 3.3;
method((float) f);
}

public static void method(short i) {
System.out.println("short");
}

public static void method(int i) {
System.out.println("int");
}

public static void method(long i) {
System.out.println("long");
}

public static void method(float f) {
System.out.println("float");
}

public static void method(double d) {
System.out.println("double");
}
}

Var-args methods
package main;

public class Main {
public static void main(String[] args) {
System.out.println(average(1));
}

public static double average(int... n) {
double sum = 0;
int count = 0;
for (int i : n) {
sum += i;
count++;
}
return sum / count;
}
}

Lakin var-args metodlarda bezen diqqetli olmaliyiq:
package main;

public class Main {
public static void main(String[] args) {
method(1, 2, 3);
}

public static void method(int i) {

}

public static void method(int... i) {

}

public static void method(int i, int... n) {

}

public static void method(int i, int j, int... k) {

}
}

 




Комментарии

Популярные сообщения из этого блога

IoC:ApplicationContext, BeanFactory. Bean

Lesson1: JDK, JVM, JRE

Lesson_2: Operations in Java