如果一个类继承自多个接口,并且这些接口具有相同的方法名和签名.如何提供不同的实现



如何实现具有相同签名方法的两个不同接口

//第一个接口

interface InterfaceA{
public int methodOne(String str);
}

//第二接口

interface InterfaceB{
public int methodOne(String str);
}

//实现类

class ImplementationClass implements InterfaceA,InterfaceB {

// How can implements the both interface differently
public int methodOne(String str){

}
}

当我尝试直接实现时,它变成了两个接口方法的单一实现。

如何实现它们呢?

接口只是一个"合约"

它向一个接收方法声明。接收方法可以定义,嘿,我想接收一个具有这些方法的对象,这些方法接受这些参数并返回这个类型

如果接口重叠,它不会使契约无效。合约是一样的,你输入X,你得到Y。

public void foo(InterfaceB) {
...
}

期望实现接口B的对象,根据接口B的契约,该对象将具有一个名为methodOne的方法,该方法返回一个整数,并接受一个String作为参数。

public void bor(InterfaceA) {
...
}

期望一个对象实现InterfaceA,根据接口A的约定,该对象将具有一个名为methodOne的方法,该方法返回一个整数,并接受一个String作为参数。

由于需求重叠,因此不期望有不同的行为。你输入一个String,你得到一个int。对象如何做到这一点,取决于对象本身。对象只提供契约所要求的内容。

对象不知道它是通过哪个契约被调用的,也不应该知道。如果你想让不同的接口有不同的行为,你应该为不同但相似的接口使用不同的对象。

相关内容

  • 没有找到相关文章

最新更新