在java里访问父类要用 super 塞,但今天上课的时候把super改成this也能访问父类的东西!
请高手指教下!

解决方案 »

  1.   

    super和this不是简单一两句能说完,子类继承了父类的属性或方法,这些被继承的也属于子类的,所以this当然能调用了,如果子类重写了父类的一个方法,那么super调用和this调用该父类方法是完全不一样的,super是调用那个被重写的父类的方法,this则是调用子类重写的方法,会导致递归调用而内存溢出。
      

  2.   

    super主要关注的是父类,this关注的是自身
      

  3.   

    super父类 this 当前对象
      

  4.   

    super 是调用父类的
    this 调用本类你把你具体代码 贴出来 然后分析下
      

  5.   

    用代码方式解释
    class A {
        public void test1() {System.out.println("1");}
        public void test2() {System.out.println("2");}
        public void test3() {System.out.println(this.getClass());}
    }class B extends A {
        public void test4() {
            this.test1(); //和super.test1()一样,因为B继承A,test1也是B的方法,所以this可以调用
            super.test3(); //和this.test3()一样,因为B没有重写test2方法,test2方法是继承A而来的,所以this也可以调用
             System.out.println(super.getClass());
            System.out.println(this.getClass());
        }    public void test2() { //重写test2方法
            super.test2(); //这个和this.test2()就一样了,这个是调用父类的test2,不会造成递归
            //this.test2(); //这个是调用子类的test2,也就是这个方法本身,会造成递归
        }
    }
      

  6.   

    父类有的东西没有私有,this直接可以访问
      

  7.   

    在子类中用super调用父类的构造方法。在类的内部用this指代本类的成员变量而不是局部变量。
      

  8.   

    super是显示的直接调用基类,而this则可以同时调用基类和自身,但是有一点,如果基类的方法被重写,那么super仍可以调用基类方法,而通过this则会调用到被资深重写的方法
      

  9.   


    集成父类,那变量如果不是private的话,在子类中当然也可以当做当前类的变量来处理,可以用this操作符,super关键字指的是调用父类的变量,如果使用super.当前类的变量就会出错了
      

  10.   

    super是调用或指向父类,而this调用或指向的是当前类。
      

  11.   

    super可以访问父类的成员,this能访问本类的成员包括从父类继承来的成员
      

  12.   

    this是一个指向对象自己的引用,该引用指向的对象为该类实例化的对象本身;
    super是一个指向该类父类的引用,如果该类不继承于任何类,那么该类调用super引用的就是Object类
      

  13.   

    this调用可以访问父类的方法就可以访问父类了
      

  14.   

    super可以看成是父类的对象,this是本类的对象
      

  15.   

    super调用父类的属性、方法,this调用自身类的属性方法
      

  16.   


    this访问不到父类的,
    你能访问到是因为:
    子类继承了父类的属性和方法,
    子类父类的属性方法都一样,
    如果你在子类对这些属性方法做写改变就明白了