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

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

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

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Arrow [ооп] class A extends B implements C нет доступа к свойствам B

Делаю класс, который наследуется от Sprite и реализует мой интерфейс.
При этом если пытаться обратиться к свойствам/методам спрайта, компилятор говорит что таких нет, т.е. спрайт вообще отсутствует в цепочке наследования.

В чём может быть проблема?
__________________
тонкий тролль, осеянный благодатью

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

Регистрация: Sep 2002
Сообщений: 30,787
Потому что интерфейс не спрайт. Если нужно обратиться к свойствам спрайта, то либо надо сделать каст в Sprite, либо написать интерфейсы IDisplayObject, IDisplayObjectContainer и т. п. со всеми свойствами.

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

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
хм, как-то не логично...
То есть, интерфейс отрезает все родительские методы класса,
но не отрезает свои методы которых нет в интерфейсе. Не понимаю логики.
По-моему, надо или отрезать все, или не отрезать ничего.

Старый 27.08.2008, 12:33
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 4  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
интерфейс ничего не отрезает.

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от terbooter Посмотреть сообщение
хм, как-то не логично...
То есть, интерфейс отрезает все родительские методы класса,
но не отрезает свои методы которых нет в интерфейсе. Не понимаю логики.
По-моему, надо или отрезать все, или не отрезать ничего.
Интерфейс — это интерфейс. Он описывает методы, которые точно есть данного экземпляра класса. Интерфейс с методом getParam() может быть реализован как наследником Sprite, так и Array. По-вашему, вы сможете воспользоваться методами и Array и Sprite?

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

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Под "отрезает" я имел ввиду
Цитата:
При этом если пытаться обратиться к свойствам/методам спрайта, компилятор говорит что таких нет, т.е. спрайт вообще отсутствует в цепочке наследования.

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от terbooter Посмотреть сообщение
Под "отрезает" я имел ввиду
Так интерпретатор работает с экземпляром класса, реализующим данный интерфейс. О том, что это Sprite, он понятия не имеет.

Старый 27.08.2008, 13:19
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 8  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
__etc, я так понимаю, когда мы задаем тип объекта
Код:
var s:Sprite;
то компилятор производит что-то вроде автогенерации интерфейса.
(как если бы мы вручную написали интерфейс ISprite добавив туда все публичные методы Sprite)
Вот и получается что
Код:
class A extends Sprite implements B
Это условно как
Код:
class A implements ISprite implements B

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

Регистрация: Sep 2002
Сообщений: 30,787
Нет никакой автогенерации интерфейсов.

Старый 27.08.2008, 13:28
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 10  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Цитата:
Сообщение от __etc Посмотреть сообщение
Интерфейс — это интерфейс. Он описывает методы, которые точно есть данного экземпляра класса. Интерфейс с методом getParam() может быть реализован как наследником Sprite, так и Array. По-вашему, вы сможете воспользоваться методами и Array и Sprite?
Если класс наследник Sprite, то я бы хотел иметь возможность воспользоваться методами Sprite плюс методы описанные в интерфейсе.

Аналогично для Array.

Не понимаю подвоха. Про множественное наследование никто ничего не говорил.

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

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

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


 


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


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