在抽象类中实现接口方法

时间:2014-04-27 16:30:05

标签: java interface abstract

我有一个扩展抽象类的具体类,后者又扩展了一个抽象类。这个顶级类实现了一个接口。我可以在顶层抽象类中实现接口方法,以便具体子类不必具有?

另外,如果接口方法采用Object类型作为参数,我可以让顶层抽象类中的实现采用另一种类型(这对我来说似乎是对的),还是我必须使用完全相同的方法签名?

3 个答案:

答案 0 :(得分:1)

  

我可以在顶层抽象类中实现接口方法,以便具体的子类不必吗?

  

另外,如果接口方法采用Object类型作为参数,我可以让顶层抽象类中的实现采用另一种类型(这对我来说似乎是对的),还是我必须使用完全相同的方法签名?

它必须是相同的签名。但是,如果您愿意并且更详细地解释您的计划,您可以使用泛型技巧进行欺骗。

答案 1 :(得分:0)

你的拳头

我可以在顶层抽象类中实现接口方法,以便具体的子类不必吗?

如果它是所有子类的共同特征,你可以这样做。

下面的

是相同

的示例
interface X{
    void show();

}
abstract class A implements X{
    public void show(){
        System.out.println("show");
    }

}

abstract class B extends A{

}

class C extends B{

}

答案 2 :(得分:0)

第二个问题

不,签名必须始终相同。

所以下面的程序说明了它

interface X{

    void print(Object obj);

}
abstract class A implements X{

    @Override
    public void print(Object obj) {
        System.out.println("print");

    }

}
如果更改子类中的类型

,程序下面的

将不会编译

interface X{

    void print(Object obj);

}
abstract class A implements X{

    @Override
    public void print(A obj) {
        System.out.println("print");

    }

}