A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 北极雪871208 中级黑马   /  2014-3-24 10:27  /  867 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

---------------------- <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>、期待与您交流! ----------------------

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马