Казахстан, Алматы, Гимназия им. Ахмета Байтурсынова №139, 2008 |
Опубликован: 23.12.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 7:
Наследование во Flash MX
Пример изменения работы иерархии
Вот совсем простой пример изменения работы иерархии классов. Мы создаем два класса (один - наследник другого). И заводим в базовом классе функцию, которая выводит в консоль все поля объекта. Затем, испробовав, как эта функция работает, заменяем ее другой. И снова смотрим, каков результат ее вызова из объекта базового и производного классов. Вот код, который реализует эти простые идеи.
_global.Base = function(a, b){ this.a = a; this.b = b; } _global.Base.prototype.printAll = function(){ for (var name in this){ trace("this." + name + " = " + this[name]); } } _global.Derived = function(a, b, c, d){ super(a, b); this.c = c; this.d = d; } _global.Derived.prototype = new Base(); b = new Base(10, 20); d = new Derived(15, 25, 35, 45); trace("================ b ==============="); b.printAll(); trace("=================================="); trace("================ d ==============="); d.printAll(); trace("=================================="); _global.Base.prototype.printAll = function(){ trace("Function is obsolete!"); } trace("================ b ==============="); b.printAll(); trace("=================================="); trace("================ d ==============="); d.printAll(); trace("==================================");
На выходе получаем:
================ b =============== this.printAll = [type Function] this.b = 20 this.a = 10 ================================== ================ d =============== this.printAll = [type Function] this.d = 45 this.c = 35 this.b = 25 this.a = 15 ================================== ================ b =============== Function is obsolete! ================================== ================ d =============== Function is obsolete! ==================================
Функция действительно заменилась - как в базовом классе, так и в производном. В следующем подпараграфе мы приведем уже более близкие к практике примеры использования этой методики.