Форум 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, 18:28
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
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
  № 7  
Ответить с цитированием
random13
 
Аватар для random13

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

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

Регистрация: May 2007
Адрес: Saint-Petersburg
Сообщений: 136
Отправить сообщение для progman с помощью ICQ
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Код AS3:
var arg1:*,arg2:*;
function func(arg1:*, arg2:*):void{
this.arg1=arg1;
this.arg2=arg2;
}
начнем с того что в приличном обществе за такой код долго бьют двухтомником Страуструпа по рукам. До образования гематомных пятен на последних.

что по мне так this перед переменной это дикость. оправданное приминение только как для передачи параметра - указатель на себя любимого.
__________________
fast restart: *((int*)0) = 0;

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

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

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

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

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

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

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


 


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


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