代码中的静态或动态绑定?

时间:2014-04-25 02:36:06

标签: java binding

class A
{
    public void display()
    {
        System.out.println("in A");
    }

    public static void invoke(A x)
    {
        x.display();
    }
}

此代码代表什么样的绑定(静态或动态)?我也很欣赏原因。

2 个答案:

答案 0 :(得分:0)

如果您有多个displayables,请创建一个声明显示方法的界面。

您的可显示实现界面。所以

interface Displayable {void display();}

class A implements Displayable {
    public void display() {System.out.println("in A");}
}
class B implements Displayable {
    public void display() {System.out.println("in B");}
}

您的调用方法是

public static void invoke(Displayable x) {x.display();}

答案 1 :(得分:0)

您已创建A类的对象,并在display()方法下调用方法invoke()。编译器能够在编译期间解析此绑定。因此,这是一个静态绑定。

对于动态绑定(后期绑定),您需要在运行时确定时间的模糊类型对象。由于上面的方法运行在编译期间确定的所有内容,因此这就是静态绑定的原因。