为了账号安全,请及时绑定邮箱和手机立即绑定

一道Java关于接口、继承和重写的基础问题

一道Java关于接口、继承和重写的基础问题

慕无忌1623718 2019-03-15 19:15:52
实践中遇到的一个问题,实在搞不懂,特来请教各位。1.首先有一个接口,接口里有一个get方法。public interface HeInterface <T extends Serializable, PK extends Serializable> {    public T get(PK id);}2.其次有一个类,实现了接口的get方法。public abstract class HeAbstract <T extends Serializable, PK extends Serializable> implements IBaseDao<T, PK>{    @Override    public T get(PK id) {        if(id==null)return null;        return (T) getCurrentSession().get(entityClass, id);    }}  3.然后我写了一个接口,继承了HeInterface这个接口,并且也有一个get方法。public interface MyInterface extends HeInterface<ClassA, String>{    public ClassA get(String id);}4.最后我写了一个实现类,实现我的接口,但是发现IDE的添加未实现的方法没有提示get方法为未实现,意思是我的get已经被实现了吗?接口继承接口可以存在重写吗?还是因为泛型导致这种问题?这是怎么一回事,请各位明示。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

从你的描述上来看get并没有实现。


查看完整回答
反对 回复 2019-04-25
?
largeQ

TA贡献2039条经验 获得超7个赞

public interface HeInterface <T extends Serializable, PK extends Serializable>


public interface MyInterface extends HeInterface<ClassA, String>

MyInterface 相当于把HeInterface里的泛型参数具体化了

T=ClassA

PK=String


相应的,HeInterface接口里的方法

public T get(PK id);

就变成了

public ClassA get(String id);


这个方法与MyInterface里重新定义的方法

public ClassA get(String id);

一模一样


对于IDE和编译器来说,2个定义一模一样的接口方法,只需要实现一个


例如


public interface A() {

    public void function();

}

public interface B() {

    public void function();

}


class Impl implements A, B {

    public void function() {

        //do something

        //这里即是A接口的实现,也是B接口的实现

    }

}

实际上,在接口继承并指定泛型参数时,完全可以不用再定义方法


查看完整回答
反对 回复 2019-04-25
  • 2 回答
  • 0 关注
  • 539 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信