Есть ли альтернатива полиморфизму в Java? - PullRequest
0 голосов
/ 15 сентября 2018

Я читал статью о часто задаваемых вопросах об интервью на Java и застрял на одном вопросе: «Какова альтернатива полиморфизму?»

Я искал его, но не получил никакого рационального ответа.

Есть ли альтернатива полиморфизму в Java?Если да, то что это?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Альтернативой использованию полиморфизма в 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().

0 голосов
/ 15 сентября 2018

Это может быть правило объектно-ориентированного программирования, называемое композицией по наследованию, которое гласит, что объект должен достигать полиморфного поведения, заключая в себе экземпляры других классов, реализующих желаемые функции, а не путем наследования от родительского класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...