我有两个类和一个如下所示的接口。快速总结:接口 Winterface、Class Big、Class Little 扩展 Big 并实现 Winterface。
public interface Winterface {}
public class Big {
public int hello = 88;
public Big() {}
public void theMethod() {
System.out.println ("Big was here: " + (this instanceof Winterface) + ", " + this.hello);
}
}
public class Little extends Big implements Winterface{
private boolean hello = true;
public Little(){}
public void theMethod() {
super.theMethod();
System.out.println("Little was here: " + hello);
}
public static void main(String [] args) {
Little l = new Little();
l.theMethod();
}
}
当我在 Little 中执行 main 时,我得到以下输出
大在这里:真的,88 小在这里:真的
我的问题是,怎么能
1) (this instanceof Winterface) 返回 true 但是
2) this.hello 是 88 岁吗?如果 this.hello = 88,那么 this = Big,它不是 Winterface 的一个实例。
我不明白这是怎么可能的,在此先感谢
编辑:谢谢大家我现在明白'this'指的是little,这是一个Big并实现Winterface。由于该方法被称为 super.theMethod(),因此可用的变量“hello”是 Big 中的变量,即使“this”指的是 little。