2013-04-20 2 views
-4

Я задаю этот вопрос, потому что в Collection я вижу, что Arrays.sort() перегружен, поэтому мне интересно, как кто-то может сказать, что статический метод перегружен, когда статические методы загружаются во время загрузки класса, а перегрузка выполняется после времени загрузки класса ,Являются ли время компиляции и время загрузки класса одинаковым?

Мой главный вопрос: перегрузка и переопределение выполняются после времени загрузки класса; поэтому они видны объектам и невидимы для статических частей. Могут ли статические методы быть перегружены?

+1

Перегрузка метода и загрузка классов - это не связанные понятия. Google и читайте о них отдельно. –

+0

Почему Arrays.sort() перегружен, когда он является статическим. – Tushar

ответ

0

Как статический, так и динамический полиморфизм являются частью полиморфизма.

В статическом полиморфизме перегрузка разрешена во время компиляции, в динамическом режиме она разрешена во время выполнения. Несмотря на то, что оба являются действительными случаями перегрузки.

4

Время компиляции и Класс нагрузки - это не одно и то же. И время выполнения (в том смысле, что я использую этот термин в следующем ...) снова что-то другое.

Анализ перегрузки выполняется по адресу Время компиляции, для обоих static и вызовов метода экземпляра. То же самое верно для случаев, когда один метод staticтеней другой метод static - разрешено на время компиляции.

Переопределение диспетчеризации (например, методы) происходит по адресу Время выполнения; т.е. когда вызов метода фактически происходит, в зависимости от фактического объекта, который является «целевым» объектом.


почему Arrays.sort() перегружается, когда он статичен

Почему бы и нет?

Как я уже сказал, как static, так и методы экземпляра могут быть перегружены. (Перекрытия ограничиваются методами экземпляра и методы экземпляра только ..., но перегрузка может использоваться со всеми видами методов и конструкторы тоже.)

Кроме того, «загрузка» и «перегрузка» совершенно несвязанные понятия , «Загрузка» - это получение классов (в этом случае) в память, но «перегрузка» относится к различным методам с разными сигнатурами, имеющими одно и то же имя.