【发布时间】:2021-01-11 08:01:29
【问题描述】:
为了这个问题,我将使用一个简单的例子。
如果我有一个 Interface 说 Animal 这就像
public interface Animal {
void jump();
}
我正在创建一个接口对象,比如
public class Main {
public static void main(String[] args) {
Animal cat = new Animal() {
@Override
public void jump() {
System.out.println("The cat jumped");
}
public void sleep() {
System.out.println("The cat slept");
}
};
cat.jump();
cat.sleep(); // cannot do that.
}
}
现在,我将sleep() 方法添加到接口实现中,并希望可以从我调用cat.jump() 的位置调用该方法。这就是我想要的。我看到这会引发错误,我确实理解,因为该对象的类型为 Animal 并且 Animal 没有 sleep() 方法。
如果我不想向interface 添加新方法,在这种情况下,我还需要哪些其他选项才能调用我在接口实现中创建的方法?
【问题讨论】:
-
为什么不直接创建
Cat的implements Animal类? -
Animal(){} 的实例是一个匿名对象,只能在匿名对象范围内访问,在此之后声明的任何内容都可以在没有反射的情况下访问
标签: java methods interface implements