刚学java,不太明白他的动态绑定是怎么回事?谁给用实例解释下?

解决方案 »

  1.   

    package com.pss.test2;import com.pss.util.prints.Conica;/**
     * @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某个方法。
      

  2.   

    不用讨论,java中都是动态绑定!
    只有c++才有静态绑定
      

  3.   

    晕!怎么没人?问题太简单了 or 还是分太少?
    =========================================
    all right!