public class Ex
{
public void eat(Animal animal){System.out.println("this is animal");}
public void eat(Dog dog){System.out.println("this is dog");}
public static void main(String[] args)
{
Ex ex=new Ex();
Animal animal=new Dog();
ex.eat(animal);
}
}
почему эта программа дает вывод: это животное, а не это собака, потому что фактический экземпляр собака во время выполненияпочему перегрузка не поддерживает полиморфизм
Принципы полиморфизма имеют 'eat()' метод класса 'Animal', который' Dog' может переопределить. Таким образом, вам не нужно писать перегруженные методы, объект - тот, кто решает, как он функционирует. – unholysampler
@unholysampler, конечно, это решает его частично, но предположим, что у вас есть четыре метода: «поесть (Animal a, Spagetti s)», «есть (Animal a, Pizza p)», «eat (Dog d, Spagetti s)», и 'eat (Dog d, Pizza p)'. – aioobe
@aioobe: Код вроде этого - дорога в ад. JUst do: 'Animal.eat (Food)', где Animal and Food - абстрактные классы для собак и спагетти и пиццы. – Mchl