![]() |
Какой тип данных правильней использовать в таком случае?
Здравствуйте.
Есть три класса: Main, A и B. Класс A унаследован от класса B. Когда я в классе Main экземплирую класс A, то я могу указать тип данных (var a: = new A();) либо A, либо B. Из этого случая меня заинтересовал вопрос: какой конкретно тип данных нужно указывать? |
Если ты вдруг создашь класс С, который будет унаследован от В, а потом твоя переменная а захочет стать экземпляром С, то лучше прописать тип В. Если переменная а всегда будет экземпляром А, то лучше указать тип А. Как-то так.
|
Dip52,
Это называется наследование, вы можете указать любой родительский класс исходного класса. Переменная класса Object будет принимать абсолютно любой класс, так-как Object - родительский класс вообще всех типов данных. Какой тип данных указать переменной зависит от контекста её использования. Если вам будет достаточно лишь свойств и методов родительского класса, то его как тип данных и укажите. Тогда, все классы, наследуемые от него смогут храниться в этой переменной. |
Если классы полностью взаимозаменяемы, зачем их 2 ?
Всё зависит от того что конкретно вам надо, и от конкретного случая. В классе А может быть переписано некоторое поведение класса В, тогда можете попасть впросак. Вообще, если вы создаёте дочерний класс, вы, по идее, должны точно представлять где будет использоваться именно он, а когда его супер класс. Как, например, если взять что обычная пила по дереву это супер класс, а лобзик и полотно для железа - дочерние классы, явно пилу по дереву нельзя будет успешно использовать вместо лобзика и полотна для металла. Но в то же время у них есть общая функция - пилить, и чтобы порезать себе палец, подойдёт любая пила :) |
Правильно было бы спросить для чего использовать суперкласс? Мой ответ для хранения и доступа к общим переменным и методам наследуемых классов. В случае если надо изменить наследуемый метод исп. override
|
Цитата:
Код AS3:
Код AS3:
А здесь: Код AS3:
Писать более общий тип имеет смысл в параметрах на входе функций или в полях класса. |
| Часовой пояс GMT +4, время: 12:46. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.