Java 接口扩展LinkedList泛型上的接口
我对链表中的Java 接口扩展LinkedList泛型上的接口,java,generics,interface,Java,Generics,Interface,我对链表中的接口扩展接口有点困惑。 也许一点代码就能最好地解释它 接口A public interface Fruit { public String getColor(); } 接口B public interface Fruit_alias extends Fruit { } 橙色类 public class Orange implements Fruit { @Override public String getColor() { retu
接口扩展接口
有点困惑。
也许一点代码就能最好地解释它
接口A
public interface Fruit {
public String getColor();
}
接口B
public interface Fruit_alias extends Fruit {
}
橙色类
public class Orange implements Fruit {
@Override
public String getColor() {
return "Orange";
}
public void pellOrange(){
}
}
Main
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
}
公共类主{
公共静态void main(字符串[]args){
LinkedList f1=新建LinkedList();
f1.push(new Orange());//给我一个错误
LinkedList f2=新的LinkedList();
推(新橙色());//工作正常
}
为什么我不能在这里使用
Orange
?这让我觉得很奇怪,因为我希望接口的行为像一个从更一般的对象继承的对象。水果别名不是橙色的超类,所以你不能这样做。因为水果别名不是橙色的超类,但水果是。超级类型可以引用继承关系中的子类型。请将声明更改为:
public class Orange implements Fruit_alias {
@Override
public String getColor() {
return "Orange";
}
public void pellOrange(){
}
}
Orange
实现水果
,而不是水果别名
。