【发布时间】:2019-12-31 03:38:45
【问题描述】:
我是 Java 新手,据我所知,通常我们使用 super 和 this 关键字来引用超类属性。以及我们不能在静态上下文(静态方法)中使用this 和super 关键字。但我有一个问题。我使用了一个匿名类来使用如下接口。我试图从匿名类内部引用number 变量(位于接口中)。但即使它不是静态上下文,我也无法使用 super 关键字来引用数字。问题是什么?。我的代码如下。
interface Age{
public static final int number =25;
public abstract int getAge();
}
public class Main {
public static void main(String[] args) {
Age age = new Age(){
public int getAge(){
int number = super.number;//compile error
//why cannot use super keyword in here to refer number variable
return number;
}
};
age.getAge();
}
}
【问题讨论】:
-
我会说那是因为你可以从一个类中实现多个接口,所以
super关键字对于你指的是哪个接口是模棱两可的 -
你不需要局部变量。只需
return number;不要编写冗余代码。