Java Static Binding: Understanding Compile-Time Method Linking
Explore Java Static Binding, a process where the link between a method call and its implementation is resolved at compile time. Learn how static binding works in Java, and how it differs from dynamic binding, helping to optimize method resolution in polymorphic scenarios.
Java - Static Binding
Binding is the process of creating a link between a method call and its actual implementation. In Java, due to polymorphism, an object can take many forms. These forms can be resolved either at compile time or runtime.
Java Static Binding
Static binding refers to the process where the connection between a method call and its implementation is resolved at compile time. It is also known as compile-time binding or early binding.
Characteristics of Java Static Binding
- Linking: The connection between the method call and implementation is determined during compile time.
- Resolve mechanism: Static binding uses the type of the class and fields to resolve the binding.
- Example: Method overloading is an example of static binding.
- Type of Methods:
private
,final
, andstatic
methods and variables use static binding.
Example of Java Static Binding
In the example below, we have a Calculator
class that contains two static methods with the same name but different parameters. The compiler decides which method to call based on the number of arguments passed, which is determined at compile time using static binding.
package com.example;
class Calculator {
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
}
public class Tester {
public static void main(String args[]) {
System.out.println(Calculator.add(10, 30)); // Method with two parameters
System.out.println(Calculator.add(10, 20, 30)); // Method with three parameters
}
}
Output
40 60
More Examples of Java Static Binding
Example 1: Non-static Methods
In this example, we create two non-static methods in the Calculator
class with the same name but different parameters. The compiler decides which method to call based on the number of arguments passed.
package com.example;
class Calculator {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
}
public class Tester {
public static void main(String args[]) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(15, 25)); // Method with two parameters
System.out.println(calculator.add(10, 20, 30)); // Method with three parameters
}
}
Output
40 60
Example 2: Overloading with Different Data Types
In this example, we overload the add
method using different data types. One method accepts int
values, and the other accepts double
values. The compiler uses static binding to resolve which method to call based on the type of arguments passed.
package com.example;
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
public class Tester {
public static void main(String args[]) {
Calculator calculator = new Calculator();
System.out.println(calculator.add(25, 35)); // Method with int parameters
System.out.println(calculator.add(25.5, 34.5)); // Method with double parameters
}
}
Output
60 60.0