new Extension()
   首先是BASE.ADD(1)(调用的其实是Extension.ADD(1))  I=2
         Extension.ADD(2) I=6
         Extension.ADD(8) I=22

解决方案 »

  1.   

    重载之后,Base()
    {
     add(1);
    }
    add(1)不再调用Base.add(1),而是调用Extension.ADD(1)
      

  2.   

    执行一下不就知道怎么回事了:)class Base {
    int i;
    Base()
    {
     add(1);
    }
    void add(int v){
    System.out.println( "I am Base.add( " + v + ")" );
    i+=v;
    }
            void print(){
             System.out.print(i);
             }
            }
    class Extension extends Base{
                   Extension(){
                    add(2);
                    }
                  void add (int v){
      System.out.println( "I am Extension.add( " + v + ")" );
                   i+=v*2;
                   }
    }public class th{
     public static void main(String args []){
      bogo( new Extension());
      }static void bogo(Base b)
    {
    b.add(8);
    b.print();
    }
    }
      

  3.   

    先构造基类 然后再构造子类   由于子类重载了add 方法 所以基类中调用的为子类的add 方法