刚学java,不太明白他的动态绑定是怎么回事?谁给用实例解释下?
解决方案 »
- 一段小代码,会存在线程安全问题吗?我觉得不会,你觉得呢?
- JTabel的问题
- 请问JAVA 一元运算符 "!" 叹号表示什么?
- sqlserver 2005用ResultSetMetaData取列类型,日期取出了nvarchar
- C++通过JNI调用Java,DestroyJavaVM后JNI_CreateJavaVM失败
- 大家好,我是新来的,想问关于JAVA学习的东西
- jdk中的JAVA程序运行问题?请教!!
- 关于 arraylist 的问题
- 小问题:如何将int转换为char?
- java 字符串处理有效率高点的解决方案吗 或者正则表达式
- 怎样在JAVA应用程序中设置类路径
- 如何把一个字符串,大写转小写并翻转输出
* @author George
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
class Father2{
public void print(){
Conica.pl("Father.print()");
}
}
class Son extends Father2{
public void print(){
Conica.pl("Son.print()");
}
}
public class Acceptor {
public static void main(String[] args){
Father2 mafia;
mafia = new Father2();
mafia.print();
mafia = new Son();
mafia.print();
}
}楼主先看看这段代码,在不运行之前看看输出什么。
如果你了解了动态绑定之后,就会理解为什么这段代码输出的是Son.print()了。
你看,mafia在编译时候表明是Father2引用,调用的是Father2的方法。但是在运行的时候,它却是调用Father2或者Son的方法,这就是动态绑定,在运行的时候bind某个方法。
只有c++才有静态绑定
=========================================
all right!