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

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

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

Регистрация: Aug 2012
Сообщений: 297
По умолчанию А можно ли не перекрывать метод, а добавить в него ещё команды?

Здравствуйте.

Можно ли осуществить такую идею?

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
если вы про перегрузку методов, то в as3 ее нет.
__________________
местонахождение

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
override function method():void
{
	super.method();
	anotherCommand();
}
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
А можно ли не перекрывать метод, а добавить в него ещё команды?
Это называется не команды, а параметры.
Нет, нельзя. Только как предложил Wolsh.

Старый 06.09.2013, 12:02
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 5  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Код AS3:
override function method():void
{
	super.method();
	anotherCommand();
}
Нельзя ли прокомментировать этот фрагмент для нубов? )

Я его пытаюсь понять так.
В подклассе создаем функцию с именем method(). Такая же функция есть и в суперклассе.
Вызываем функцию суперкласса командой super.method(); Это нам ничего не дает, просто тупо выполнилась функция суперкласса. Зачем, непонятно. Потом мы вызываем некий метод anotherCommand(), который, предположительно, есть в суперклассе. И... А почему бы его просто так не вызвать? Где подвох?

Мозайка не складывается.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вопрос был — как к уже описанному методу добавить еще каких-то действий.
super.method() выполняет код, который содержит этот "уже описанный метод", а anotherCommand это что угодно, что нужно "добавить", выполнить после.
И он не в суперклассе (было бы "super.anotherMethod()"). Он вообще не обязан быть где-то, это просто следующий, дополнительный, блок кода.
__________________
Reality.getBounds(this);

Старый 06.09.2013, 12:27
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 7  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
В данном случае это переопределение родительского метода method. Метода anotherCommand у родителя нет, поэтому логика выполнения следующая:
Допустим у нас есть класс Human, у которого есть метод eat(). С помощью этого метода человек ест еду. Но у нас есть уникальный человек Вася, который ест немного не так как все люди - он выпивает стакан водки после каждой трапезы.
В итоге получаем:
Код AS3:
public class Human
{
	public function Human()
	{
	}
 
	public function eat():void
	{
		trace("Омномном");
	}
}
И класс нашего товарища Васи:
Код AS3:
public class Vasya extends Human
{
	public function Vasya()
	{
	}
 
	override public function eat():void
	{
		super.eat();
		trace("Буль буль буль");
	}
}
Поэтому если мы вызовем метод eat() у объекта класса Vasya, в консоли получим
Цитата:
Омномном
Буль буль буль

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну и, конечно, можно "вшить" в суперметод вызов дополнительного метода, который в суперклассе просто оставить пустым, а в наследниках "перекрывать" с нужным наполнением.
Можно так же в конце метода посылать событие типа "я закончил", подписываться на него и в обработчике выполнять дополнительные действия.
Непонятен сам запрет на оверрайд. Просто так запихнуть кусок кода в уже существующий метод конечно же нельзя.
__________________
Reality.getBounds(this);

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

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

Старый 06.09.2013, 15:44
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 10  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Всем огромное спасибо.

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

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

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


 


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


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