Показать сообщение отдельно
Старый 18.09.2012, 19:32
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
в теориях не силен, сори, если что
но мне представляется совсем простая штука:
с полиморфизмом понятно - наследники могут могут иметь свою реализацию свойств\методов базового класса,
а динамическим в этом контексте связывание будет потому, что на этапе компиляции не обязательно должно быть известно какая именно из реализаций понадобится
вот пример как бы из букваря, типов фигур может быть сколько захочешь, можно и других добавить - код не изменится
Код AS3:
package
{
 
	public class Main extends Sprite
	{
 
		public function Main():void
		{
			var list:Vector.<Figure> = Vector.<Figure>([new Circle(), new Square()]);
 
			for each(var fig:Figure in list)
			{
				// компилятор здесь не знает какие наследники Figure в списке
				// все это выяснится в рантайме
				trace( "fig : " + fig +"; area : " + fig.area());
			}
 
		}
 
	}
 
}
 
class Figure
{
	public var size:Number = 1;
	public function area():Number {	return 0;}
}
 
class Circle extends Figure
{
	override public function area():Number 	{ return 0.25 * Math.PI * size * size;	}
}
 
class Square extends Figure
{
	override public function area():Number 	{ return  size * size;	}
}