实现多个具有相同方法的接口和父类与实现接口有相同方法
Posted 豆豆DE思念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现多个具有相同方法的接口和父类与实现接口有相同方法相关的知识,希望对你有一定的参考价值。
一、实现多个具有相同方法的接口
这种情况还是比较少会遇到的,但事实是存在这样的问题,所以写下解决的方法:
使用内部类:
interface InterA { void f(); } interface InterB { void f(); } public class C implements InterA { public void f() { // 实现接口InterA方法 System.out.println("A.f()"); } private class ImplB implements InterB { public void f() { // 实现接口InterA方法 System.out.println("B.f()"); } } public InterB getB() { return new ImplB(); } // 使用 public static void main(String[] args) { C c = new C(); InterA a = c; //C实现了A接口,可以直接向上转型 a.f(); InterB b = c.getB(); b.f(); } }
这样就区分开使用不同接口的方法,如果是直接实现两个接口,然后实现方法,那么将是同时实现两个接口中的方法。
二、父类与实现接口有相同方法
当父类中有与实现接口相同的方法时,比如(使用HTTPServlet实现的Filter就具有相同的destroy方法)
如果不显示实现方法会发现没有语法的错误,那么就是说明继承下来的方法实现了接口中的同名方法。
如果需要区分开,那么需要重写放以及增加一个方法,在增加的方法中使用super关键字调用父类的方法,而重写方法不调用父类方法,那么就算是区分开了。。
注:如果情况在复杂一点(如更多接口,还有一个父类)交叉多个相同方法。。。。。。。大家应该很难才会遇到这样的情况。。。而且接口的设计方法都是有意义的,不会有那么多的同名。。
以上是关于实现多个具有相同方法的接口和父类与实现接口有相同方法的主要内容,如果未能解决你的问题,请参考以下文章