java中的静态绑定是怎么个回事?

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:45:23
java中的变量都是静态绑定的,方法的话只有static和final(所有private默认是final的)是静态绑定的.
这个我在书上也看到了,小弟不明白的是静态绑定是怎么样绑定的,可以举个例子吗,望各位高手帮帮忙?

建议您先了解一下java的多态性.所谓静态绑定就是在程序编译时就绑定的.java中的变量都是静态绑定的,方法的话只有static和final(所有private默认是final的)是静态绑定的.

就是在编译的时候已经决定了变量的值和应该调用哪个类的方法.你要把它同动态绑定联系起来才好理解.例如:

class A {
static void method1() {
System.out.println("A.method1()");
}
void method2() {
System.out.println("A.method2()");
}
}
public class B extends A{
// will not override A.method1()
static void method1() {
System.out.println("B.method1()");
}
// will override the A. method2()
void method2() {
System.out.println("B.method2()");
}
public static void main(String[] args) {
A a = new B();
a.method1(); //因为A里面的method1是static,编译时就静态绑定了,所以输出 A.method1()
a.method2(); //而method2()不是static方法,a是由B new出来的,执行的时候会执行new它的那个类的method2()方法,所以输出B.method2(),这是java的多态性
}
}