Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: polymorphism, overloading, method, overriding, runtime

Что такое статический и динамический полиморфизм в контексте 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

    Java

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

#polymorphism

#overloading

#method

#overriding

#runtime

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

  • Аватар

    Android Guru

    Anton Gulyaev

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