Java 静态绑定是怎么回事?怎么实现静态绑定?

文章导读
Previous Quiz Next 绑定是一种在方法调用与方法实际实现之间建立链接的机制。根据 Java 中的多态概念,对象可以具有多种不同的形式。对象的这些形式可以在编译时和运行时解析。
📋 目录
  1. A Java 静态绑定
  2. B Java 静态绑定的特性
  3. C Java 静态绑定的示例
  4. D Java 静态绑定:更多示例
A A

Java - 静态绑定



Previous
Quiz
Next

绑定是一种在方法调用与方法实际实现之间建立链接的机制。根据 Java 中的多态概念,对象可以具有多种不同的形式。对象的这些形式可以在编译时和运行时解析。

Java 静态绑定

Static binding 指的是在编译时解析方法调用与方法实现之间链接的过程。Static binding 也被称为 compile-time bindingearly binding

Java 静态绑定的特性

  • Linking − 方法调用与方法实现之间的链接在编译时解析。

  • Resolve mechanism − 静态绑定使用类和字段的类型来解析绑定。

  • Example − 方法重载是静态绑定的一个例子。

  • Type of Methods − private、final 和 static 方法及变量使用静态绑定。

Java 静态绑定的示例

在这个示例中,我们创建了一个 Calculator 类,其中包含两个同名但参数不同的 static 方法,分别用于相加两个和三个 int 值。在 main() 方法中,我们调用这些方法并打印结果。根据传递的参数数量,编译器使用静态绑定决定调用哪个方法,并相应地打印结果。

package com.;

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(20, 40));
      System.out.println(Calculator.add(40, 50, 60));
   }
}

输出

60
150

Java 静态绑定:更多示例

示例 1

在这个示例中,我们创建了一个 Calculator 类,其中包含两个同名但参数不同的非 static 方法,分别用于相加两个和三个 int 值。在 main() 方法中,我们使用 Calculator 类的对象调用这些方法并打印结果。根据传递的参数数量,编译器使用静态绑定决定调用哪个方法,并相应地打印结果。

package com.;

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(20, 40));
      System.out.println(calculator.add(40, 50, 60));
   }
}

输出

60
150

示例 2

在这个示例中,我们创建了一个 Calculator 类,其中包含两个同名但参数类型不同的非 static 方法,分别用于相加两个 int 值和两个 double 值。在 main() 方法中,我们使用 Calculator 类的对象调用这些方法并打印结果。根据传递的参数类型,编译器使用静态绑定决定调用哪个方法,并相应地打印结果。

package com.;

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(20, 40));
      System.out.println(calculator.add(20.0, 40.0));
   }
}

输出

60
60.0