我正在阅读一篇有关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());
   }


请注意,非多态版本显然更冗长。但事实是,如果CatDogmakeSound()方法没有公共接口,则非多态版本将起作用。

关于java - Java中是否可以替代多态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52342325/

10-10 20:10