我想知道Java中是否存在使用always" extends"而不是" implements"来定义类型参数边界的特殊原因.
例:
public interface C {}
public class A<B implements C>{}
Run Code Online (Sandbox Code Playgroud)
被禁止但是
public class A<B extends C>{}
Run Code Online (Sandbox Code Playgroud)
是正确的.这是什么原因?
据我所知,参数多态是一种允许对各种数据(类型)进行统一操作的技术.我的知识是否正确?
这个例子是参数多态吗?我相信这是因为Animal.talk允许在不使用特定动物类型(猫或狗)的情况下调用谈话.
public interface Animal
{
public String talk();
}
public class Cat implements Animal
{
public String talk()
{
return "Cat says Meow!";
}
}
public class Dog implements Animal
{
public String talk()
{
return "Dog says Woof! Woof!";
}
}
import java.util.*;
public class PolymorphismExample
{
public static void main(String[] args)
{
Collection<Animal> animals = new ArrayList<Animal>();
animals.add(new Cat());
animals.add(new Dog());
for (Animal a : animals)
{
System.out.println(a.talk());
}
}
}
Run Code Online (Sandbox Code Playgroud)
问候.
编辑:如果我的例子没有具体展示参数多态性,请你提供一个?谢谢.
我想写点像
public class A implements B<T implements C> {}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class M<I extends P> extends R<I extends P> implements Q<I extends P> {}
Run Code Online (Sandbox Code Playgroud)
但我得到的错误就像多个标记和令牌上的语法错误延伸,预期.请让我知道这样做的正确方法是什么.
我们可以扩展一个类,但是我们不能实现一个类.我们可以实现一个接口,但不能扩展接口.
在什么情况下我们应该使用扩展?