关键字“this”可以在Java的抽象类中使用吗?
我用下面的示例尝试,它工作正常。
我希望它选择子类的值,因为不会为超类创建对象(因为它是抽象的)。但它只是拾取超级类的字段值。
请帮助我了解这背后的概念是什么?
abstract class SuperAbstract {
private int a = 2;
public void funA() {
System.out.println("In SuperAbstract: this.a " + a);
}
}
class SubClass extends SuperAbstract {
private int a = 34;
}
我打电话new SubClass.funA();
我期望它打印34,但它正在打印2。
P.S.:我想知道的是,为什么在抽象类中使用它不会给我一个错误?
如下文所强调的,它将在实例上工作,抽象类将没有实例。this
在实例方法或构造函数中,这是对当前对象的引用 , 该对象是正在调用其方法或构造函数的对象。可以使用 this 从实例方法或构造函数中引用当前对象的任何成员。从: http://java.sun.com/docs/books/tutorial/java/javaOO/thiskey.html