我不明白为什么我在下面指示的行上出现错误。如果有涉及该主题的特定主题,请提供一行(或说明)。

public interface Button {
  void press();
}
public class Bomb implements Button {
  public void press() {
    System.out.println("Doesn't work");
  }
  void boom() {
    System.out.println("Exploded");
  }
}
public class Test {
  public static void main(String[] args) {
    Button redButton = new Bomb();
    redButton.press();
    redButton.boom(); // <-- Error is on this line.
  }
}

最佳答案

Button redButton = new Bomb();


接口Button没有定义方法boom()

运行时实例可以是Bomb(具有boom()),但是编译器不知道(仅看到编译时类型,即Button)。

您需要使用由类Bomb定义的接口:

Bomb redButton = new Bomb();

10-07 13:42