---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
所谓静态绑定就是在程序编译时就绑定的.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的多态性
}
}
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
|