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

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

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

Регистрация: Sep 2009
Сообщений: 130
По умолчанию Уточнения: про this и отличия protected, private

1. this. используется только для членов классов: переменных и ссылок на объект? Я так понял, что переменная не может быть "сама по себе", даже если она используется в методе того класса, в котором объявлена. в отличие от с++.

2.
Перевод Мука:
"Метод экземпляра, объявленный с использованием модификатора protected ... доступен только для кода класса, содержащего описание этого метода, или для кода потомков этого класса..."
и
"Метод экземпляра, объявленный с использованием модификатора private ... доступен только для кода класса, содержащего описание этого метода."
Разница только в том, что private нельзя вызвать из потомков? Не считая запрет доступа из того же самого или других пакетов.

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
1."Сама по себе":
trace(this);
var a = this;
MyFunction(this);
Вы это имели в виду?
2. AS3 хэлп:
Цитата:
Идентификаторы управления доступом и наследование
Если свойство объявлено с использованием ключевого слова public, оно будет доступно для всего кода. Это означает, что ключевое слово public, в отличие от слов private, protected и internal, не накладывает ограничений на наследование свойств.

Если свойство объявлено с использованием ключевого слова private, оно доступно только в определяющем его классе, то есть не наследуется никакими подклассами. Такое поведение отличается от предыдущих версий ActionScript, где поведение ключевого слова private больше напоминало поведение protected в ActionScript 3.0.

Ключевое слово protected указывает, что свойство доступно не только для определяющего его класса, но и для всех подклассов. В отличие от ключевого слова protected в языке программирования Java, в ActionScript 3.0 protected не делает свойство доступным для всех других классов в одном пакете. В ActionScript 3.0 свойство, объявленное с использованием ключевого слова protected доступно только для подклассов. Более того, защищенное свойство доступно для подкласса независимо от того, находится он в том же пакете, что и базовый класс, или в другом.

Чтобы ограничить доступность свойства только тем пакетом, в котором оно определено, следует использовать только ключевое слово internal без других идентификаторов управления доступом. Идентификатор управления доступом internal используется по умолчанию, когда нет других атрибутов. Свойство, объявленное с идентификатором internal, наследуется только подклассами, включенными в тот же пакет.

Старый 22.09.2009, 17:13
TommyLee вне форума Посмотреть профиль Отправить личное сообщение для TommyLee Найти все сообщения от TommyLee
  № 3  
Ответить с цитированием
TommyLee

Регистрация: Sep 2009
Сообщений: 130
по 1.
Код AS3:
class VirtualPet{
              var petName;
              var curr=1000;
              var human;
              public function VirtualPet(name,curr_plus){
                   this.petName=name;
                   this.curr+=curr_plus;
                   this.human=new Human(); 
              }
}
}
об этом. что члены класса нельзя использовать "сами по себе", только через this. В с++ можно без this - просто взять и написать.

по 2. спасибо.

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Аа.. почему же только через this? Можно и с this и без него.
Код AS3:
class VirtualPet{
              var petName;
              var curr=1000;
              var human;
              public function VirtualPet(name,curr_plus){
                   petName=name;
                   this.curr+=curr_plus;
                   human=new Human(); 
              }
}

Старый 22.09.2009, 17:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Лучше с ним)

Старый 22.09.2009, 17:36
ToRR вне форума Посмотреть профиль Отправить личное сообщение для ToRR Найти все сообщения от ToRR
  № 6  
Ответить с цитированием
ToRR

Регистрация: Feb 2007
Сообщений: 63
this - указатель на объект, в контексте которого сейчас выполняется код.
он может быть и "сам по себе" - this можно передать как аргумент при вызове функции и тд и тп.

Старый 22.09.2009, 17:47
TommyLee вне форума Посмотреть профиль Отправить личное сообщение для TommyLee Найти все сообщения от TommyLee
  № 7  
Ответить с цитированием
TommyLee

Регистрация: Sep 2009
Сообщений: 130
Цитата:
Сообщение от ToRR Посмотреть сообщение
this - указатель на объект, в контексте которого сейчас выполняется код.
он может быть и "сам по себе" - this можно передать как аргумент при вызове функции и тд и тп.
меня интересуют причины введения в язык this, чтобы знать, какие грабли могут ждать. есть, конечно, подозрение, что это не технический нюанс, а логический - чтобы программисту легче было ориентироваться в коде, но не уверен..

Старый 22.09.2009, 18:20
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 8  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
функция внутри метода, внутри нее this будет указывать на метод, если не ошибаюсь

Старый 22.09.2009, 18:28
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Сообщение от etc Посмотреть сообщение
Лучше с ним)
Не хочу разводить холивар, но почему все таки лучше с ним?
Разницу вижу только в
Код AS3:
var arg1:*,arg2:*;
function func(arg1:*, arg2:*):void{
this.arg1=arg1;
this.arg2=arg2;
}
Для меня код с this читается как то сложнее, да и писать его постоянно не очень хочется. Хотя, может это лишь дело привычки.

Старый 22.09.2009, 18:35
random13 вне форума Посмотреть профиль Отправить личное сообщение для random13 Найти все сообщения от random13
  № 10  
Ответить с цитированием
random13
 
Аватар для random13

Регистрация: Oct 2006
Адрес: Москва
Сообщений: 889
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Не хочу разводить холивар, но почему все таки лучше с ним?
Разницу вижу только в
Код AS3:
var arg1:*,arg2:*;
function func(arg1:*, arg2:*):void{
this.arg1=arg1;
this.arg2=arg2;
}
Для меня код с this читается как то сложнее, да и писать его постоянно не очень хочется. Хотя, может это лишь дело привычки.
дело привычки, я тоже раньше не понимал, а теперь читается действительно лучше, а холивар уже был, в другой теме, пару месяцев назад

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

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

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


 


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


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