我对链接列表中的Interface extends Interface
感到有些困惑。
可能一点点代码解释得最好
界面A
public interface Fruit {
public String getColor();
}
接口B
public interface Fruit_alias extends Fruit {
}
Class Orange
public class Orange implements Fruit {
@Override
public String getColor() {
return "Orange";
}
public void pellOrange(){
}
}
主要
public class Main {
public static void main(String[] args){
LinkedList<Fruit_alias> f1=new LinkedList<Frucht_alias>();
f1.push(new Orange()); //gives me an Error
LinkedList<Fruit> f2=new LinkedList<Frucht>();
f2.push(new Orange()); // works fine
}
为什么我不能在这里使用Orange
?这对我来说很奇怪,因为我希望界面的行为就像一个继承自更一般对象的对象。
答案 0 :(得分:1)
Fruit_alias不是Orange的超级类,所以你不能这样做。
答案 1 :(得分:1)
因为Fruit_alias
不是Orange的超类,而Fruit
是。{1}}。超类型可以在继承关系中引用子类型。将声明更改为:
public class Orange implements Fruit_alias {
@Override
public String getColor() {
return "Orange";
}
public void pellOrange(){
}
}