码迷,mamicode.com
首页 > 其他好文 > 详细

实现多个具有相同方法的接口和父类与实现接口有相同方法

时间:2018-10-02 17:48:19      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:servlet   同名   out   code   ace   而且   turn   调用   一点   

一、实现多个具有相同方法的接口

这种情况还是比较少会遇到的,但事实是存在这样的问题,所以写下解决的方法:

使用内部类:

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关键字调用父类的方法,而重写方法不调用父类方法,那么就算是区分开了。

 

注:如果情况在复杂一点(如更多接口,还有一个父类)交叉多个相同方法。。。。。。。大家应该很难才会遇到这样的情况。。。而且接口的设计方法都是有意义的,不会有那么多的同名。。

 

实现多个具有相同方法的接口和父类与实现接口有相同方法

标签:servlet   同名   out   code   ace   而且   turn   调用   一点   

原文地址:https://www.cnblogs.com/lukelook/p/9736771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!