Java中的静态绑定与动态绑定

Java中,静态绑定是指在编译时确定/知道对象类型的程序的执行,即,当编译器执行代码时,它知道对象的类型或对象所属的类。对象在运行时确定。

同样,静态绑定使用类的类型进行绑定,而动态绑定使用对象的类型,因为解析仅在运行时发生,因为对象仅在运行时创建,因此动态绑定的速度比静态绑定要慢。

由于私有,最终和静态修饰符绑定到类级别,因此方法和变量使用静态绑定并由编译器绑定,而其他方法则在运行时基于运行时对象进行绑定。

通常,我们可以说重载方法是使用静态绑定来绑定的,而重写方法是使用动态绑定来绑定的。

示例

import java.util.Collection;

import java.util.Collections;

import java.util.HashSet;

public class StaticDynamicBinding {

   public static void main(String[] args) {

      Collection<String> col = new HashSet<>();

      col.add("hello");

      StaticDynamicBinding sdObj = new StaticDynamicBinding();

      sdObj.print(col);

      StaticDynamicBinding sdObj1 = new StaticDynamicBindingClass();

      sdObj1.print(col);

   }

   void print(Collection<String> col) {

      System.out.println("in collection method");

   }

   void print(HashSet<String> hs) {

      System.out.println("in hashset method");

   }

}

class StaticDynamicBindingClass extends StaticDynamicBinding {

   void print(Collection<String> col) {

      System.out.println("in collection method of child class");

   }

}

输出结果

in collection method

in collection method of child class

以上是 Java中的静态绑定与动态绑定 的全部内容, 来源链接: utcz.com/z/350225.html

回到顶部