黑马程序员技术交流社区

标题: 黑马程序员 关于java的静态绑定! [打印本页]

作者: 北极雪871208    时间: 2014-3-24 10:27
标题: 黑马程序员 关于java的静态绑定!
---------------------- <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>、期待与您交流! ----------------------





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2