我正在研究Java编程和面向对象的编程。我一直迷恋上动态多态性的好处是什么?
在下面查看我的示例程序。
为什么在示例2中使用示例1?
class SuperHero {
private String power = ("Generic Power");
public void useSuperPower() {
System.out.println(power);
}
}
class Spiderman extends SuperHero {
private String power = ("Web sling!");
public void useSuperPower() {
System.out.println(power);
}
}
class Wolverine extends SuperHero {
private String power = ("Hack and Slash!");
public void useSuperPower() {
System.out.println(power);
}
}
class main {
public static void main (String args[]) {
//example 1
SuperHero hero = new SuperHero();
SuperHero hero1 = new Spiderman();
SuperHero hero2 = new Wolverine();
hero.useSuperPower();
hero1.useSuperPower();
hero2.useSuperPower();
//example 2
Spiderman test = new Spiderman();
Wolverine test2 = new Wolverine();
test.useSuperPower();
test2.useSuperPower();
}
}
最佳答案
动态多态性何时强大的最简单示例是集合中。我们可以将不同类的对象收集在一起,并使用所有相同的对象,只要它们都共享一个父接口即可。例如:
List<SuperHero> avengers = new ArrayList<>();
avengers.add(new Spiderman());
avengers.add(new Wolverine());
System.out.println("Avengers Assemble!");
for(SuperHero hero : avengers){
hero.useSuperPower();
}
它还允许API非常灵活。我们可以创建需要一个接口的方法,但是稍后将它们传递给一个子类型的对象,而无需重新创建该方法。例如:
public void usePower(SuperHero hero){
hero.useSuperPower();
}
在这里,我们可以使用扩展SuperHero的对象调用此方法。 (该示例有点la脚,因为我们可以直接调用
useSuperPower()
方法,但希望您能理解这一点。)基本上,多态性允许我们创建类,它们都做相同的事情,但做事不同,然后(几乎)可以互换使用。
关于java - Java中的动态多态性有什么好处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41496803/