"Динами́ческая типиза́ция — приём, широко используемый в языках
программирования и языках спецификации, при котором переменная связывается
с типом в момент присваивания значения, а не в момент объявления
переменной. Таким образом, в различных участках программы одна и та же
переменная может принимать значения разных типов."
http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
Но ведь при полиформизме тип переменной тоже может определиться только на
этапе исполнения кода:
class Base
static Base construct(enum param) {
switch(param)
{
case ...:
return new A();
case ...:
retrun new B();
}
}
class A extends Base
doSomething();
class B extends Base
doSomething();
main {
Base v = Base::construct(userInput());
v.doSomething();
}
Здесь тип переменной v (A или B) определится только на этапе исполнения
кода. Но ведь C++ не является динамически типизированным языком.
Где противоречие?
Posted via RSDN NNTP Server 2.1 beta