有一段时间我一直困惑为什么我们需要接口中的默认方法,今天我正在阅读它。尽管我的问题很少得到回答,但我仍然有一些疑问。
让我们举一个简单的例子,我有一个 interface1。A类和B类实现interface1。interface1 有一个方法 X。
interface interface1{
void methodX();
}
class A implements interface1{
@override
public void methodX(){
//something
};
}
class B implements interface1{
@override
public void methodX(){
//something
};
}
据我了解,由于向 interface1 添加新方法 Y 会破坏 A 类和 B 类,因此引入了默认方法。这意味着现在我可以添加一个默认方法,而无需修改 A 类和 B 类。这也意味着默认方法必须足够通用,才能为 A 类和 B 类执行我们期望它做的任何事情.
现在,让我们考虑一下我们通常在接口中添加函数,以便我们可以通过覆盖它来为它们提供特定于类的实现。所以基本上,如果我在接口中添加一个方法 Y 作为默认值,那么我会期望类 A 和类 B(或类 A/ClassB)覆盖该方法。
这意味着,我将修改 A 类/B 类或两者兼而有之。
这就是让我困惑的地方。这可以通过创建一个新接口并修改 1 个(或两个)类来实现该新接口(接口 2 扩展接口 1)来处理,然后在类中提供相同的实现。
interface interface2 extends interface1{
void methodY();
}
class A implements interface2{
@override
public void methodY(){
//something
}
}
class B implements interface1{
@override
public void methodX(){
//something
};
}
默认方法实际上如何帮助我们不修改实现它的类。
相关分类