public class A{    public void fa(){
       System.out.println("class A : function fa");
    }
    public void fb(){
       System.out.println("class B: function fb");
       this.fa();//我想问的是这里的fa()是否一定调用的是A类中的fa();
    }}

解决方案 »

  1.   

    this代替的是当前对象,也就是A类中this指的就是A类,this.fa()调用的就是当前类的方法
      

  2.   

    看看你的意思是不是这样:
    public class SomeThing { public static void main(String[] args) {

    A ao=new B();

    ao.fb();
    }

    static public class   A{ 
        public   void   fa(){ 
              System.out.println( "class   A   :   function   fa ");      } 
        public   void   fb(){ 
              System.out.println( "class   B:   function   fb "); 
              this.fa();
        } 
    }

    static public class B extends A{

     public   void   fa(){ 
              System.out.println( "class   B   :   function   fa ");      } 
    }
    }输出:
    ______
    class   B:   function   fb 
    class   B   :   function   fa 
    ______用类B继承类A,并覆盖fa()方法。
    这时用类A的引用来调用this.fa(),
    实际调用的是类B的方法,也就是子类的方法,而不是类A的方法。
      

  3.   


    你们老师说得对
    。 this.fa();//不一定调用的是A类中的fa();
    例如:类B 从A类继承并重写了fa()方法(注意:没有重写fb()方法),则:
    A a=new B();
    a.fb();//此时fb()当中调用的this.fa();就是重写的那个fa()了。
      

  4.   

    是这样?class A {    public void fa() {
            System.out.println("class   A   :   function   fa ");
        }    public void fb() {
            //System.out.println("class   B:   function   fb ");
            this.fa();//我想问的是这里的fa()是否一定调用的是A类中的fa();
        }
    }class B extends A {    @Override
        public void fa() {
            System.out.println("class   B   :   function   fb ");
        }
    }public class Main {    public static void main(String args[]) {
            B a = new B();
            a.fb();
            System.out.println("----------");
            A b=a;
            b.fb();
            System.out.println("----------");
            A c=new A();
            c.fb();
        }
    }
    /*
    run:
    class   B   :   function   fb 
    ----------
    class   B   :   function   fb 
    ----------
    class   A   :   function   fa 
    成功生成(总时间:0 秒)*/
      

  5.   

    this。
    指的是调用当前对象的方法,
    也就是说你new出的是哪个就调用哪个
      

  6.   

    这是我们老师给的代码叫我们回去思考,遇到了如下问题?
    public class Test{
    public static void main(String[] args){
    A a = new B();
    a.fb();



    }}class A{
    public int a =1;

    public void fa(){
    System.out.println("class A: function fa running....");
    }

    public void fb(){
    System.out.println("class A: function fb running...");
    this.fa();  //这里的fa()方法是类B的
    System.out.println(this.a); //为什么这里的变量a又是类A的,这里的this不是代表 同一个实例吗?
    System.out.println("class A: function fb stop ...");
    }}class B extends A{
    public int a =2;

    public void fa(){
    System.out.println("class B: function fa runntin...");

    }

    public void fb(){
    System.out.println("class B: function fb running...");
    System.out.println(this.a);
    super.fb();
    System.out.println("class B: function fb stop ...");
    }}
      

  7.   

    1.this 代表运行时的实例。
    2.当你创建一个子类继承了A类并覆盖了A类的方法,那么在运行时this.fa();指的就是子类的实例。