在继承方面,super和this之间有什么区别?

时间:2015-03-13 09:07:43

标签: java

以下是我的问题,super关键字仅用于继承? 在继承方面,thissuper之间有什么区别?

2 个答案:

答案 0 :(得分:6)

  • this指的是当前的对象,即它是一个参考
  • super指的是超类,即它是一个范围机制

当前对象与超类的对象相同的对象。如果您有Dog扩展Animal,并执行new Dog(),那么您创建 1 对象,此对象都是Animal实例和Dog实例。

这是一个例子

class Dog extends Animal {

    public void treatWell(DogSpa spa) {
        spa.takeCareOf(this);      // pass this object to the spa
    }

    public void makeSound() {
        System.out.println("bark");
        super.makeSound();         // call makeSound in Animal scope
    }
}

答案 1 :(得分:2)

这指的是当前对象,而super指的是当前对象的父类。

考虑一下:

class Parent {
    protected int value;
    public void test() {
         //print parent
    }
}

class Child extends Parent {
    public void test() {
       //print child
    }
    private void someMethod() {
        this.test();//will print child
        super.test();//will print parent
    }        
}