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

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

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

Регистрация: Feb 2015
Сообщений: 63
По умолчанию вопрос о наследстве, override

Приветствую! В документации Adobe написано, что функция override не применяется к базовой функции(методу) родительского класса, одноименной с ним. Если мне нужно переназначить этот базовый метод, а другие функции в классе оставить нетронутыми для потомка, то придется переделывать код родителя? Нет ли какого-то разрешения, вроде virtual, до которого я еще не добрался, но которое может помочь?

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
базовой функции(методу) родительского класса, одноименной с ним
Это они про конструктор так написали?

Добавлено через 3 минуты
ну если да, то в конструкторе можно вызывать другой метод, который уже точно можно оверрайдить.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Feb 2015
Сообщений: 63
я не дословно процитировал, да, про метод-конструктор имелось ввиду

например такое не работает

Код AS3:
public class A{
public function A(){ // суперкласс
//здесь исходный код
 
}
// еще код
}


Код AS3:
public class B extends A{
override public function A(){ 
//здесь измененный код
 
}
 
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так В не наследует никакой public function A, с чего бы к ней применялся override?
Если хотите разный код в конструкторах А и В, то GBee дал правильное решение.
__________________
Reality.getBounds(this);

Старый 11.02.2015, 05:03
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 5  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
GBee, спасибо!

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Зачем делать отдельный метод? Конструктор при наследовании оверрайдится в любом случае.
Код AS3:
public class A {
public function A() {
trace("A");
}
}
 
public class B extends A {
public function B() {
trace("B");
}
}
 
public class С extends A {
public function С() {
super(); // Вызвать конструктор предка (А)
trace("С");
}
}
 
var Obj:A = new A();   // выведет A
var Obj:B = new B();   // выведет B
var Obj:C = new C();   // выведет А и С
__________________
interplanety

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
var Obj:B = new B(); // выведет B
Уверены?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от GBee Посмотреть сообщение
Уверены?
Да, проверил и получается - наврал. Просто раньше ни разу не сталкивался с тем, чтобы не выполнять конструктор предка, вот и считал, что все работает так.
__________________
interplanety

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ну вроде можно было так обходить:
Код AS3:
if(0)
   super();
Правда не уверен и некрасиво это.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Dec 2014
Сообщений: 312
Не знаю про
Код AS3:
if(0) super();
но
Код AS3:
if (false) super();
работает.

А почему некрасиво?

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

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

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


 


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


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