Допустим, у вас есть родительский класс с именем Animal и дочерние классы с именами Dog, Cat и Lizard. У каждого класса есть вызов метода makeSound (). Затем, когда вы говорите Animal a1 = new Dog();
и Animal a2 = new Cat()
, a1.makeSound()
будет лаять, а a2.makeSound()
мяукает.
Технический термин для этого поведения называется полиморфизмом. Это полезно для повторного использования кода. Вам нужно только один раз написать код для приложения, в котором есть Animals makeSound (), когда они счастливы, вместо отдельного кода для каждого типа животных.
Еще одно использование полиморфизма - скрытие реализации вашего кода от других пользователей. Например, вы можете показать другим пользователям, что вы используете список, а затем у вас есть возможность реализовать список в виде LinkedList или ArrayList. Вы также можете выбрать LinkedList, а затем переключиться на ArrayList без влияния на пользователей.
Вы также не можете сказать Dog d = new Animal()
, потому что Собака - это Животное, но Животное не обязательно является Собакой.