Этот класс абстрактен, потому что goPee() метод не может быть определен для людей. Он может быть определен только для подклассов Male и Female. Кроме того, человек — это абстрактное понятие - вы не можете создать человека, который не является ни мужчиной, ни женщиной. Это должно быть либо то, либо другое.
Итак, мы откладываем реализацию, используя абстрактный класс.
// tell the class to take a pee break for (Human person : group) person.goPee(); }
Выполнение этого приведет к:
Stand Up Sit Down ...
Ответ 2
Полиморфизм - это способность экземпляра класса вести себя так, как если бы он был экземпляром другого класса в своем дереве наследования, чаще всего одним из его классов-предков. Например, в Java все классы наследуются от Object . Следовательно, вы можете создать переменную типа Object и назначить ей экземпляр любого класса.
Переопределение - это тип функции, который встречается в классе, наследуемом от другого класса. Функция переопределения "заменяет" функцию, унаследованную от базового класса, но делает это таким образом, что она вызывается даже тогда, когда экземпляр ее класса притворяется другим типом с помощью полиморфизма. Ссылаясь на предыдущий пример, вы могли бы определить свой собственный класс и переопределить функцию toString(). Поскольку эта функция наследуется от Object , она по-прежнему будет доступна, если вы скопируете экземпляр этого класса в переменную объектного типа. Обычно, если вы вызываете toString() в своем классе, когда он притворяется объектом, версия toString, которая на самом деле сработает, определяется в самом объекте. Однако, поскольку функция является переопределяемой, определение toString() из вашего класса используется, даже если истинный тип экземпляра класса скрыт за полиморфизмом.
Перегрузка - это действие по определению нескольких методов с одинаковым именем, но с разными параметрами. Это не связано ни с переопределением, ни с полиморфизмом.
Ответ 3
Полиморфизм означает более одной формы, один и тот же объект, выполняющий различные операции в соответствии с требованием.
Полиморфизм может быть достигнут двумя способами, а именно
Переопределение метода
Перегрузка метода
Перегрузка метода означает запись двух или более методов в одном классе с использованием одного и того же имени метода, но передача параметров отличается.
Переопределение метода означает, что мы используем имена методов в разных классах, это означает, что метод родительского класса используется в дочернем классе.
В Java для достижения полиморфизма ссылочная переменная суперкласса может содержать объект подкласса.
Для достижения полиморфизма каждый разработчик должен использовать одни и те же имена методов в проекте.
Ответ 4
Для достижения полиморфизма используются как переопределение, так и перегрузка.
У вас может быть метод в классе, который переопределен в одном или нескольких подклассах. Метод выполняет разные действия в зависимости от того, какой класс использовался для создания экземпляра объекта.
classCoffeeextendsBeverage { booleanisAcceptableTemperature() { return temperature > 70; } }
classWineextendsBeverage { booleanisAcceptableTemperature() { return temperature < 10; } }
У вас также может быть метод, который перегружен двумя или более наборами аргументов. Метод выполняет разные действия в зависимости от типа (ов) переданных аргументов.