Java Extends和Interface具有相同的方法,具有相同的参数,但返回类型不同
在java中,我必须创建一个扩展另一个类并实现接口的类。这是我必须延长的课程Java Extends和Interface具有相同的方法,具有相同的参数,但返回类型不同,java,Java,在java中,我必须创建一个扩展另一个类并实现接口的类。这是我必须延长的课程 public class Cell { public void receiveRat(RatInterface pRat) { } } 这是我必须实现的接口 public interface HoleInterface { public int[] receiveRat(RatInterface pRat); } 我已经上了这门课 public class
public class Cell {
public void receiveRat(RatInterface pRat) {
}
}
这是我必须实现的接口
public interface HoleInterface {
public int[] receiveRat(RatInterface pRat);
}
我已经上了这门课
public class Hole extends Cell implements HoleInterface {
public Hole() {
}
@Override
public int[] receiveRat(RatInterface pRat) {
// TODO Auto-generated method stub
return null;
}
hole类中的int[]不起作用,因为hole扩展了单元格,并且单元格有一个类似于返回类型void的方法。我该怎么办?据我所知,那是不可能的。返回类型冲突。您可以将其中一个方法重命名为类似于
public void getRat(RatInterface pRat){…}
的方法,或者让Cell实现HoleInterface,删除public void receiveRat(RatInterface pRat){…}
方法,并将其替换为@Override public int[]receiveRat(RatInterface pRat){…}
方法。若孔延伸单元,它也间接实现了孔接口。像这样:
public class Cell implements HoleInterface {
@Override
public int[] receiveRat(RatInterface pRat) {
return null;
}
但这只是一个想法。。。如何解决你的问题取决于你想解决的具体任务或问题。Q:你想做什么?如果“Cell.receiveRat()”和“HoleInterface.receiveRat()”是两个不同的东西,那么为什么不给其中一个起不同的名字呢?这是一个赋值,我不能更改名称。我想知道我是否做错了什么,或者我无能为力,只能更改名称?Java中的类不能实现两个具有相同签名(即名称+参数列表)但返回类型不同的方法。请注意,JVM本身在加载和使用这类类类方面没有问题,但Java语言没有明确的方法来构造它们(即使它有时会创建违反此规则的合成方法)。这是您应该与老师讨论的问题。现在,如果可能的话。如果单元格的
receiveRat()
方法返回void,那么当前没有任何东西正在使用返回的内容,所以您可以将其更改为returnint[]
,并且没有任何东西会中断,所以我会这样做。因为这是一个类赋值,OP说他/她被赋予了这些要求:正确的方法是要求讲师澄清。我猜OP可能误解了什么。。。
//Now indirectly implements HoleInterface through Cell
public class Hole extends Cell{
public Hole() {
}
@Override
public int[] receiveRat(RatInterface pRat) {
return null;
}