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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.05.2008, 14:11
Crazy Driver вне форума Посмотреть профиль Отправить личное сообщение для Crazy Driver Посетить домашнюю страницу Crazy Driver Найти все сообщения от Crazy Driver
  № 1  
Ответить с цитированием
Crazy Driver

Регистрация: May 2007
Сообщений: 7
Отправить сообщение для Crazy Driver с помощью ICQ
По умолчанию Как побороть отсутствие перегруженных методов?

Есть класс родитель и класс наследник.
Необходимо сделать разныеконструкторы у этих классов. Как это можно сделать в ActionScript?

Пример:
Код:
public class ParentClass{
 public function ParentClass(params_for_parent){
  code_for_parent;
 }
}

public class ChildClass extends ParentClass{
 public function ParentClass(params_for_child){
  code_for_child;
 }
}
На такой код флекс ругается: 1203: No default constructor found in base class
А как этот default constructor сделать если перегрузки методов нет?
Либо как сделать в дочернем класе так, чтобы небыло необходимости вызывать super()?


Последний раз редактировалось Crazy Driver; 08.05.2008 в 14:24.
Старый 08.05.2008, 14:34
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
if (false) super();

Старый 08.05.2008, 14:40
Crazy Driver вне форума Посмотреть профиль Отправить личное сообщение для Crazy Driver Посетить домашнюю страницу Crazy Driver Найти все сообщения от Crazy Driver
  № 3  
Ответить с цитированием
Crazy Driver

Регистрация: May 2007
Сообщений: 7
Отправить сообщение для Crazy Driver с помощью ICQ
Код:
if (false) super();
Такое не прокатило: таже ошибка.
А вот так всё получилось:
Код:
if (1>2) super();
Спасибо, __etc!

Старый 08.05.2008, 14:56
Crazy Driver вне форума Посмотреть профиль Отправить личное сообщение для Crazy Driver Посетить домашнюю страницу Crazy Driver Найти все сообщения от Crazy Driver
  № 4  
Ответить с цитированием
Crazy Driver

Регистрация: May 2007
Сообщений: 7
Отправить сообщение для Crazy Driver с помощью ICQ
Решение конечно действенное, но выглядит, мягко говоря, странно.
Что это, баг флекса? Или в других IDE флеша тоже самое?

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

Регистрация: Sep 2002
Сообщений: 30,787
Конструктор суперкласса всегда вызывается, если его вызов не указан.

Старый 08.05.2008, 16:35
Crazy Driver вне форума Посмотреть профиль Отправить личное сообщение для Crazy Driver Посетить домашнюю страницу Crazy Driver Найти все сообщения от Crazy Driver
  № 6  
Ответить с цитированием
Crazy Driver

Регистрация: May 2007
Сообщений: 7
Отправить сообщение для Crazy Driver с помощью ICQ
Цитата:
Сообщение от __etc Посмотреть сообщение
Конструктор суперкласса всегда вызывается, если его вызов не указан.
Да, но в данном случае вызывается пустой конструктор (без параметров и без тела), которого нет в супер классе. Причём я непонимаю почему такую возможность не сделали "легальной" и использовать её нужно в такой вот извращённой форме.

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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
потому что инициализация класса, на то и инициализация, что бы требовать аргументов. если они нужны для инициализации, значит они нужны для не родимой, и объект без них будет создан неправильно. чё не понятного? это же как 2х2. если требуют - значит надо.

Старый 08.05.2008, 22:51
Crazy Driver вне форума Посмотреть профиль Отправить личное сообщение для Crazy Driver Посетить домашнюю страницу Crazy Driver Найти все сообщения от Crazy Driver
  № 8  
Ответить с цитированием
Crazy Driver

Регистрация: May 2007
Сообщений: 7
Отправить сообщение для Crazy Driver с помощью ICQ
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
потому что инициализация класса, на то и инициализация, что бы требовать аргументов. если они нужны для инициализации, значит они нужны для не родимой, и объект без них будет создан неправильно. чё не понятного? это же как 2х2. если требуют - значит надо.
Ну надо или не надо и правильно ли создастся объект, наверно всётаки решать программисту.
У меня от одного класса наследуются 4 других, у которых практически одинаковая инициализация, которая и описана в конструкторе суперкласса. А один дочерний класс не нуждается в такой инициализации.
В других языках (таких как Java, C++ и т.п.) подобная задача решается очень просто с помощью перегрузки конструктора, т.е. 2 конструктора у супер класса, принимают разное количество параметров.
Здесь же, раз нет возможности перегрузить конструктор, хотелось бы хотя бы переопределить его - вот это как 2х2. А то, что это сделать можно только через условие (1>2) или что-нибудь в этом духе - это вообще бред (не в одном другом языке подобных извращений не встречал).

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

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

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


 


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


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