Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что такое статический и динамический полиморфизм в контексте Java?

Этот вопрос помогает понять два типа полиморфизма в Java — статический (на этапе компиляции) и динамический (на этапе выполнения).

Короткий ответ

Статический полиморфизм достигается через перегрузку методов, где компилятор выбирает метод, основываясь на аргументах. Динамический полиморфизм реализуется через переопределение методов, где решение о вызове метода принимается во время выполнения.

Длинный ответ

Статический полиморфизм (compile-time):
Это поведение, когда выбор метода определяется компилятором.

- Реализация: Перегрузка методов (method overloading).

- Пример:

class Calculator {
    int add(int a, int b) {
        return a + b;
    }
    double add(double a, double b) {
        return a + b;
    }
}

Здесь компилятор решает, какую версию add вызывать, основываясь на типе аргументов.

 

Динамический полиморфизм (runtime):
Это поведение, при котором метод, вызванный у объекта, определяется во время выполнения.

- Реализация: Переопределение методов (method overriding) и использование позднего связывания.

- Пример:

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}
class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}
public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.sound(); // Вывод: Dog barks
    }
}

Здесь JVM во время выполнения вызывает метод sound класса Dog.

 

Когда использовать:

- Статический полиморфизм полезен для увеличения читаемости кода через перегрузку.

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

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Java

Ключевые слова

#polymorphism

#overloading

#method

#overriding

#runtime

Подпишись на Java Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.