实现两个含同名同签名方法的接口时,类如何重写该方法?是否可行?
实现含同名同签名方法的两个接口的解决方案
完全可以实现,主要有两种处理方式:
1. 公共方法统一实现
像你给出的示例代码那样,直接编写一个公共的add方法即可。因为两个接口的方法签名完全一致,这个公共方法会同时满足两个接口的实现要求。不管通过哪个接口的引用调用add,都会执行同一套逻辑。
示例代码:
interface example1 { int add(int a, int b); } interface example2 { int add(int a, int b); } public class cls : example1, example2 { public int add(int a, int b) { int c = a + b; return c; } }
2. 显式接口实现(区分不同逻辑)
如果需要针对两个接口的add方法执行不同逻辑,可以用显式接口实现——在方法名前加上对应接口的名称和.,以此区分不同接口的方法。
示例代码:
interface example1 { int add(int a, int b); } interface example2 { int add(int a, int b); } public class cls : example1, example2 { int example1.add(int a, int b) { // 对应example1接口的add逻辑 return a + b; } int example2.add(int a, int b) { // 对应example2接口的add逻辑 return a * b; // 这里改成乘法做示例 } }
调用时必须通过对应接口的引用才能触发各自的逻辑:
example1 e1 = new cls(); e1.add(2,3); // 执行example1的add,返回5 example2 e2 = new cls(); e2.add(2,3); // 执行example2的add,返回6
注意:显式实现的方法不能加public修饰符,它们仅属于对应的接口,无法通过类的直接实例调用,必须转成接口类型才行。
内容的提问来源于stack exchange,提问作者Keshav Pratap K
相关产品推荐
相关产品推荐

