Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.11.2013, 09:36
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 1  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
По умолчанию Статические методы не видят свойств класса?

Попробовал в статическом методе обратиться к this, и словил ошибку.

Потом попробовал обратиться оттуда к экземплярным методам этого же класса, а также к свойствам.
И тоже получил ошибки. Выставил всем модификатор доступа public, но ситуация не изменилась.

Странное дело, выходит статические методы принципиально не видят экземплярные свойства?
Выходит, это кабы две различные реальности, почти не пересекающиеся.
Вроде бы у Мука ничего не было на этот счёт.

А что же делать, если статический метод должен обработать некий объект?
Похоже, единственный способ сделать это, это передавать ему эти объекты в качестве аргументов?

Старый 06.11.2013, 09:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну поставьте себя на место Класса. Какой объект он должен считать this ("собой"), если созданы несколько (сотни?) его экземпляров? В том и смысл статических свойств-методов, что они ОБЩИЕ для всех экземпляров класса и НЕ МОГУТ быть собственными индивидуальными свойствами экземпляров, как х и у например. А тогда говорить о каком-то this применительно к статике просто бессмысленно.
Если же речь о "реестре" экземпляров, сохраняемом в статике в массиве или векторе с какой-то целью работы со всем семейством, то да, передавайте из экземпляра ссылку на себя.
Но я бы таким не увлекался. Лучше 10 раз подумать, действительно ли здесь нужна статика.
__________________
Reality.getBounds(this);

Старый 06.11.2013, 10:27
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 3  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Статики можно воспринимать как обычные функции, это не экземплярные методы. Чтобы воспользоваться статиком не нужно создавать экземпляр класса. То, что доступ к ним идет через точку (что очень похоже на доступ к нестатикам, но не то же самое) - не более, чем способ указать компилятору, какую именно из этих "глобальных" функций мы хотим использовать. Если хотите, точка в этом случае - всего лишь часть имени функции. Т.е. статики ничего не знают ни о каких this, они сами по себе.
Цитата:
Похоже, единственный способ сделать это, это передавать ему эти объекты в качестве аргументов?
Да. Но.
Если в ваших статиках нужен экземпляр класса, к которому они приписаны, скорее всего это не должно быть статиком .

Старый 06.11.2013, 13:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Вроде бы у Мука ничего не было на этот счёт.
На Муке свет клином не сошелся. Есть куча других книжек. А данный вопрос вообще общий для очень многих языков, так что можете легко нагуглить информацию о том, как работают статики и не статики

Старый 06.11.2013, 14:06
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
В статических методах нельзя использовать оператор this и обращаться к НЕ статическим свойствам.

Старый 06.11.2013, 15:40
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 6  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Всем спасибо, расклад проясняется.

Есть еще два вопроса общего плана:

1. Складывается впечатление, что лучше всего делать один чистый "статический класс", который не имеет конструктора и не предназначен для инстанциации.
И в котором будет много статических свойств и методов (и все они public). И все классы проекта могут к нему обращаться и он делает ряд каких-то задач.
Такой подход вообще практикуется, он "нормален"?

2. Какие задачи как правило решают статические методы и свойства, если вкратце, в самой общей форме изложить?
Есть ли какой-то критерий, чтобы сказать, ага вот в этом типе задач они точно нужны, а вот этом лучше не надо.

Старый 06.11.2013, 15:56
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
1. Конструктора быть не может, он есть всегда, даже если Вы его сотрете из кода, то компилятор всё равно его туда вставит. И да, так делают, если не ошибаюсь, то называется это - фасад.
2. Мне кажется, что прибегать к ним стоит, только в плане получение-присваивания ссылок.

Старый 06.11.2013, 16:59
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
1.Целиком статические классы делать можно, да и есть они, к примеру Math. Т.е. это может быть какой-то утилитный класс, точнее именованный набор функций по-сути.
2.Тут соображения примерно такие: в статиках хранятся общие для экземпляров данные, чтобы не плодить копий этих данных в каждом экземпляре. Это своего рода глобальные данные для всех экземпляров класса.
Статик-методы.. ну, их заводят для работы с этми общими данными в большей степени. Или это опять же какие-то утилитные вещи.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
статические методы , экземплярные свойства

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.