Содержит ли java привязку времени?

88
7

говорится, что перегрузка имеет привязку времени компиляции в java, но фактически объект, созданный во время выполнения, поэтому я смущен тем, как происходит привязка времени компиляции.

спросил(а) 2010-08-11T12:17:00+04:00 10 лет, 10 месяцев назад
1
Решение
78

Это означает, что компилятор работает над тем, какая перегрузка используется, основываясь исключительно на типе времени компиляции соответствующих выражений. Пример кода:


class Parent
{
void foo(Object x)
{
System.out.println("Parent.foo(Object)");
}
}

class Child extends Parent
{
void foo(String x)
{
System.out.println("Child.foo(String)");
}
}

public class Test
{
public static void main(String[] args)
{
Child c = new Child();
c.foo("hello"); // Calls Child.foo(String)
Parent p = c;
p.foo("hello"); // Calls Parent.foo(Object)
}
}

Обратите внимание, как объявленный тип переменной (Parent или Child для p и c соответственно) определяет, какие перегрузки рассматриваются.


Обратите внимание, что это не то же самое, что переопределение, основанное на типе времени выполнения целевого объекта.

ответил(а) 2010-08-11T12:19:00+04:00 10 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема