This question already has answers here:
not implementing all of the methods of interface. is it possible?
(10个回答)
2年前关闭。
假设我有一个接口
如果基类
(10个回答)
2年前关闭。
假设我有一个接口
IBird
。它具有许多方法,例如eat()
,walk()
,run()
和fly()
。如果基类
Ostrich
要实现IBird
,应该怎么做?因为Ostrich
不能飞行,但是可以执行IBird
中的所有其他操作。 最佳答案
您可以制作Ostrich
abstract
。在某些情况下,这可能会起作用,但在此情况下不起作用,因为每个Ostrich
实例都必须实现缺少的功能。
正如Johny
所指出的,另一种选择是抛出UnsupportedOperationException
。但这可能会导致意外崩溃,对用户不利。
第三种方法是从接口fly()
中删除方法IBird
,只保留所有鸟共享的东西。然后,创建另一个扩展IBirdThatCanFly
的接口IBird
。然后,您可以添加缺少的fly()
方法。
public interface IBird { //all birds
public void eat();
public void walk();
public void run();
}
public interface IBirdThatCanFly extends IBird { //birds that can fly
public void fly();
}
public class Ostrich implements IBird { //Ostrich can't fly
public void eat() { ... }
public void walk() { ... }
public void run() { ... }
}
10-08 16:49