关于绑定见 http://blog.youkuaiyun.com/nyzhl/archive/2007/05/27/1627601.aspx
我们知道,Java中默认是晚绑定(late binding) ,这个叫法比较混乱,有人叫静态绑定(static binding),还有人叫运行时绑定(runtime binding),他们说的都是一回事。
但凡事都有例外。final关键字声明的就是早绑定。因为final方法不允许重写(override),他想晚绑定也没方法可以晚绑定。
还有一个关键字是private,私有成员,他的子类看不到,当然没法晚绑定了。
另外static方法是不是也是晚绑定呢?严格来说,static方法是属于类的,应该是早绑定。但是它也可以写成对象调用的样子。
如Thread.currenThread(); //获得当前线程
也可以这么写:
Thread t = new Thread();
t.currenThread();
这样写严格来讲在逻辑上是错误的。但是Java编译器并不报错,t.currenThread(); 相当于Thread.currenThread();
那么如果用对象来调用静态方法,会不会晚绑定呢?写个程序试一下就好了































运行结果:
Method of Class A !
Method of Class A !
由此得到验证,static方法是早绑定。