class   A{   
          int   a=f();   
          int   f(){return   1;}   
          }   
    
          class   B   extends   A{   
          int   b=a;   
          int   f(){return   2;}   
            
          public   static   void   main(String   args[]){   
          B   b1=   new   B();   
          System.out.println(b1.b);   
          }   
          }   
谁能解释一下啊 这是什么作用的啊
尤其是 int a=f();
       int f(){return 1;}
 还有b1.b是如何调用的      

解决方案 »

  1.   

    你最后是在B类里获取的a变量值
    那a变量在B类里调用的就是B类的f()方法
      

  2.   

    上面的程序输出的是2.
    1 类A里面有个成员变量int a=f();的意思是a的值等于方法f()的返回值,也就是1;
    2 类B继承了类A,并且重写了方法f().这时候f()的返回值是2。并且也继承了成员变量a,也就是说类B中也有个int a;
    3 main方法是在类B里面的,这时int b=a。而a又等于重写后f()的返回值也就是2.所以输出是2了。
      

  3.   

    int f(){return 1;} 是方法,方法的返回值是1
    int a=f(); 将方法的返回值赋值给a
    b1.b//B重写了父类的方法f(),b1.b调用B中的f()方法
      

  4.   

    由于子类重写了父类f()的方法,所以先调B的f() 赋值给A.a,然后把a的值付给B.b,结果是2
      

  5.   

    上面的程序输出的是2. 
    1 类A里面有个成员变量int a=f();的意思是a的值等于方法f()的返回值,也就是1; 
    2 类B继承了类A,并且重写了方法f().这时候f()的返回值是2。并且也继承了成员变量a,也就是说类B中也有个int a; 
    3 main方法是在类B里面的,这时int b=a。而a又等于重写后f()的返回值也就是2.所以输出是2了。