Java 关于多态性
Java中的多态性表示通过重写子类方法可以实现的许多形式。关于允许传入泛型值的泛型,例如Java 关于多态性,java,polymorphism,overriding,Java,Polymorphism,Overriding,Java中的多态性表示通过重写子类方法可以实现的许多形式。关于允许传入泛型值的泛型,例如ArrayList。这是多态性概念的一部分吗? CheersPolymorhphism不能应用于泛型类型。 虽然字符串扩展了对象,数组列表不能用于引用数组列表 Object obj=new String();//好啊 ArrayList=新建ArrayList();//不好 泛型和多态性是两件不同的事情 泛型主要用于指定所需的类型。可以使用通配符定义一系列类型。例如,java中的多态性可以通过两种方式在jav
ArrayList
。这是多态性概念的一部分吗?
CheersPolymorhphism不能应用于泛型类型。 虽然
字符串
扩展了对象
,数组列表
不能用于引用数组列表
Object obj=new String();//好啊
ArrayList=新建ArrayList();//不好
泛型和多态性是两件不同的事情
泛型主要用于指定所需的类型。可以使用通配符定义一系列类型。例如,java中的多态性可以通过两种方式在java中实现
是的,它可以通过重写子类中的方法来完成。您也可以在重载和重写的参数中使用genrics对象。在Java中,将对象用于多态性被认为是一种不好的模式。它并没有像接口那样为您提供保证和类型安全性
List<Object> animals = new ArrayList<Object>();
animals.add(new Sheep());
animals.add(new Cat());
// This will throw us an error! (ClassCastException)
Cat cat = (Cat) animals.get(0)
List animals=new ArrayList();
动物。添加(新绵羊());
添加(新的Cat());
//这将给我们带来一个错误!(ClassCastException)
猫=(猫)动物。获取(0)
上面演示的错误无法在编译时捕获,只有在运行时发生错误时才会抛出。如果我们创建了一个动物界面,我们本可以完全避免这个错误
interface Animal {
//other methods you need to hide through polymorphism
void sound();
}
List<Animal> animals = new ArrayList<Animal>();
// Sheep and Cat implement the Animal interface
animals.add(new Sheep());
animals.add(new Cat());
// No error
Animal animal = animals.get(0)
// This will through a COMPILE TIME error
Cat cat = animal.get(1);
界面动物{
//需要通过多态性隐藏的其他方法
虚无的声音();
}
列出动物=新建ArrayList();
//绵羊和猫实现了动物接口
动物。添加(新绵羊());
添加(新的Cat());
//无误
动物=动物。获取(0)
//这将导致编译时错误
猫=动物。获取(1);
这显示了一种更好的实现多态性的方法,我们创建了一种更安全的方法,可以在编译时而不是运行时进行检查。尽可能避免使用Object,可能有更好的界面可供您设计或使用。我认为此链接可能包含您感兴趣的信息:。它涵盖了不同类型的多态性,包括参数多态性,这正是您在这里讨论的。许多人倾向于从面向对象编程模型的角度考虑多态性,但事实是多态性是一个更广泛的概念,在其他编程范例中,它以不同的方式实现。在Haskell或SML等函数式编程语言中,参数多态性是关键。Java泛型与它有很多相似之处。
List<Object> animals = new ArrayList<Object>();
animals.add(new Sheep());
animals.add(new Cat());
// This will throw us an error! (ClassCastException)
Cat cat = (Cat) animals.get(0)
interface Animal {
//other methods you need to hide through polymorphism
void sound();
}
List<Animal> animals = new ArrayList<Animal>();
// Sheep and Cat implement the Animal interface
animals.add(new Sheep());
animals.add(new Cat());
// No error
Animal animal = animals.get(0)
// This will through a COMPILE TIME error
Cat cat = animal.get(1);