![]() |
наследование классов: реализация функции clone() объектов
Всем доброго времени суток.
Есть такая иерархия классов: BaseObject - содержит базовые свойства, присущие всем объектам игрового мира WorldObject - наследник класса BaseObject, основная графическая единица игры У обоих этих объектов есть метод clone(), который создает и возвращает копию этого объекта. Вопрос в том, как правильно реализовать эту функцию в классе WorldObject, чтобы: свойства, присущие классу BaseObject копировались в его функции clone(), а свойства, присущие классу WorldObject, копировались в его функции clone()? Самое лучшее, что придумалось, выглядит так: Код AS3:
Код AS3:
|
Есть такой вариант:
Код AS3:
Код AS3:
|
Ну как, подходит?
|
да как то тоже не очень по ООП-шному ). Луче уж тогда просто описывать все поля в самом классе WorldObject (и его собственные и из базового класса), просто не вызывая super.clone() вообще
|
Код AS3:
Код AS3:
Это что бы работало, а вообще baseObjectPtr можно было бы создавать в самой функции clone, а не параметром передавать. |
Как раз тот случай когда пригодились бы виртуальные методы. Вообще, я думаю, что параметр функции клонирования ни к чему, проще жить будет если она сама все что ей нужно будет создавать.
|
incvizitor, неувязочка небольшая получилась: в BaseObject клонируется исключительно в переданный объект (и нового не создается), а в WorldObject переданная ссылка нигде и не используется. Логика то метода разная получается - нехорошо ))
|
i.o., прочитайте комментарий который я оставил после своего поста, я там уже ответил на Вашу претензию =)
Добавлено через 3 минуты А вообще, думаю писать надо вот так: Код AS3:
|
Только так не скомпилируется, да и проще мижно:
Код AS3:
|
Цитата:
PS: для веселухи метод с writeObject: Код AS3:
|
| Часовой пояс GMT +4, время: 11:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.