我正在阅读一篇有关Java面试常见问题的文章,并陷入一个问题:“多态性的替代方法是什么?”
我进行了搜索,但没有得到任何合理的答案。
Java中是否可以替代多态?如果是,那是什么?
最佳答案
在Java中使用多态的替代方法是使用instanceof
并键入强制类型转换。
这不是一个很好的选择...
这是一个例子来说明我的意思:
public interface Animal {
String makeSound(); // polymorphic method ...
}
public class Cat implements Animal {
public String makeSound() { return "meow"; }
}
public class Dog implements Animal {
public String makeSound() { return "woof"; }
}
// polymorphic:
Animal someAnimal = ...
System.out.println("Animal sound is " + someAnimal.makeSound());
// non-polymorphic
if (someAnimal instanceof Cat) {
System.out.println("Animal sound is " + ((Cat) someAnimal).makeSound());
} else if (someAnimal instanceof Dog) {
System.out.println("Animal sound is " + ((Dog) someAnimal).makeSound());
}
请注意,非多态版本显然更冗长。但事实是,如果
Cat
和Dog
与makeSound()
方法没有公共接口,则非多态版本将起作用。关于java - Java中是否可以替代多态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52342325/