假设我有一个名为Parent的接口
interface Parent{
void methodOne();
}这个接口在10个不同的子类中实现
class Child1 implements Parent{
void methodOne();
}
class Child2 implements Parent{
void methodOne();
}
:
:
class Child10 implements Parent{
void methodOne();
}如何在不破坏其他10个类的情况下向父接口添加新方法?
interface Parent{
void methodOne();
void methodtwo();
}我知道在Java8中我们可以添加默认方法,但是在Java8之前有没有其他方法可以做到这一点呢
发布于 2019-06-05 23:55:39
之所以引入默认方法,是因为如果要向接口添加新方法,则所有实现此接口的类都会抛出错误,强制您在这些类中实现新方法,这就是类中断的含义。但是,如果向接口添加任何新方法,如果该方法未声明为默认方法,则该方法必须由实现该接口的所有类实现。正如您已经注意到的,这是在Java 8中引入的,以帮助实现向后兼容性。有关这一点的进一步说明,您可以使用check this article。你也可以check this几乎类似的问题来指导你从给出的答案。但是,对于以前的Java版本,您可以使用Abstract类而不是接口来避免中断类。
发布于 2019-06-05 23:58:44
如果没有默认实现,您就无法向接口添加方法,而不必在每个实现类中实现它。绕过它的方法是让您的类扩展一个抽象类,后者反过来实现接口。你会得到类似这样的东西:
public interface Parent {
public void methodOne();
}
public abstract class AbstractChild implements Parent {
//literally, leave blank
}
public class Child1 extends AbstractChild {
public void methodOne() {
//implementation goes here
}
}
....现在,如果您想要向接口添加新方法,您可以在AbstractChild中实现它们-所有的ChildX类都不需要修改。
https://stackoverflow.com/questions/56463949
复制相似问题