Java报错:Number不能作为Sequence的父接口,求原因与修正方案
问题原因与修正方案
嘿,我来帮你捋捋这个问题哈!
你遇到的报错the type number cannot be a superinterface of Sequence,核心原因是Java里接口只能继承其他接口,而Number是一个抽象类(不是接口),接口根本没法继承类,所以这段代码肯定会报错~
接下来给你两种修正思路,看你的实际需求来选:
思路1:把Sequence改成抽象类
如果你的Sequence确实需要具备Number的特性,那把它改成抽象类就可以了——因为类是可以继承类的,同时你还能保留next()这个抽象方法让子类实现:
public abstract class Sequence<T> extends Number { public abstract T next(); }
思路2:让Sequence保持为接口,由实现类继承Number
如果Sequence必须是接口(比如要让多个不同的类实现它,而这些类可能已经有其他父类了),那可以让Sequence只定义自己的方法,然后让实现它的类去继承Number:
// 保持Sequence为接口 public interface Sequence<T> { T next(); } // 实现类同时继承Number和实现Sequence public class MySequence extends Number implements Sequence<Integer> { @Override public Integer next() { // 这里写你生成下一个序列元素的逻辑 return 1; } // 必须实现Number类要求的四个抽象方法 @Override public int intValue() { return 0; } @Override public long longValue() { return 0; } @Override public float floatValue() { return 0f; } @Override public double doubleValue() { return 0.0; } }
顺便再提一句Java的继承规则,方便你以后避坑:
- 类是单继承:一个类只能继承一个父类,但可以实现多个接口
- 接口是多继承:一个接口可以继承多个接口,但绝对不能继承类
内容的提问来源于stack exchange,提问作者GMan91
相关产品推荐
相关产品推荐

