![]() |
Наследование и статические переменные
Приветствую всех!
Пусть есть класс Car, у которого есть статическая переменная speed, которая используется во множестве функций множества экземпляров этого класса (множества здесь в смысле, что их много). Если мы меняем значение этой статической переменной speed, то, естественно, все экземпляры класса Car в своих функциях используют новое значение этой переменной. Предположим, что я хочу создать класс NewCar, наследующий класс Car. У класса NewCar другое значение статической переменной speed. Как мне не переопределяя все функции (использующие speed) из Car в NewCar добиться, чтобы эти функции использовали значение статической переменной speed из подкласса, а не из класса? |
Зачем ее статической делать?
|
Цитата:
|
В NewCar написать
Код AS1/AS2:
|
У каждого Car может быть своя speed. Но Вам виднее.
|
Цитата:
Попробую еще раз объяснить. Есть суперкласс Car: Код:
class Car {Код:
class NewCar extends Car {Код:
var car:Car = new Car();Цитата:
2dimarik: Цитата:
Постараюсь описать мой случай. Есть две категории юнитов (два класса: один супер, второй наследник; или два наследника от одного супер - не важно) - "свои" и "враги", соответственно есть две группы юнитов по n штук в каждой. Эти две группы юнитов передвигаются по карте, каждой группе присуща своя скорость speed, задаваемая в собственном классе. Ну, а статической она является для того, чтобы изменив ее на уровне класса, вся группа получила новое значение (не во всех классах, а только в этом), иначе пришлось бы в каждом экземпляре менять скорость вручную. |
Код AS1/AS2:
|
Это банальное переопределение ф-ии. Представьте, что таких ф-ий 25...))) Получится, что наследник по объему кода равен суперклассу - пропадают все преимущества наследования.
|
А ты в Car во всех методах измени speed на getSpeed(), и наслаждайся всеми преимуществами наследования в любом количестве классов-наследников.
|
И даже так работает как просили:
Код AS1/AS2:
Код AS1/AS2:
А прочесть по этой ситуации можно у Мука "Основы АС2" стр. 111 |
| Часовой пояс GMT +4, время: 02:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.