我有一个扩展抽象类的具体类,后者又扩展了一个抽象类。这个顶级类实现了一个接口。我可以在顶层抽象类中实现接口方法,以便具体子类不必具有?
另外,如果接口方法采用Object类型作为参数,我可以让顶层抽象类中的实现采用另一种类型(这对我来说似乎是对的),还是我必须使用完全相同的方法签名?
答案 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");
}
}