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

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

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

Регистрация: Jun 2010
Сообщений: 120
По умолчанию Проблема с super()

Приведу сокращенный вариант примеры из книги К.Мука гл. 25 стр. 706-716.

Код AS3:
package org.moock.drawing
{	
	public class BasicShape extends Shape
	{
		public function BasicShape()
		{
 
		}
	}
}
Код AS3:
package org.moock.drawing
{
	public class Polygon extends BasicShape
	{
		public function Polygon(xpoints:Array = null, ypoints:Array = null)
		{
			super(); // Здесь все верно, т.к. конструктор класса BasicShape не имеет параметров
		}
	}
}
Код AS3:
package org.moock.drawing
{
	public class Rectangle extends Polygon
	{
		public function Rectangle(width:Number = 100, height:Number = 100)
		{
			super(); // Должно быть так super(xpoints, ypoints)
		}
	}
}

1. Почему у ключевого слова super() описанного в Rectangle отсутствуют аргументы?
2. Количество и тип переменных описанных в суперклассе должен содержать и подкласс?


Последний раз редактировалось goldlider; 20.10.2011 в 17:59.
Старый 20.10.2011, 17:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
1. Почему у ключевого слова super() описанного в Rectangle отсутствуют аргументы?
Так захотелось.
Т.к.
Код:
public function Polygon(xpoints:Array = null, ypoints:Array = null)
то в качестве аргументов будет переданы дефолтные значения (null)

2: не понял.

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

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
1. У класса Polygon все параметры конструктора помечены как необязательные, со значениями по-умолчанию.

2. Все переменные описанные в суперклассе наследуются и попадают в производный класс.
Но обратиться из подкласса вы можете только к public и protected полям и методам.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

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

Регистрация: Jun 2010
Сообщений: 120
ChuwY,
Код AS3:
public function Polygon(xpoints:Number = 20, ypoints:Number = 30)
в таком случае мы в классе Rectangle должны написать так?
Код AS3:
super(xpoints, ypoints)


Последний раз редактировалось goldlider; 20.10.2011 в 18:38.
Старый 20.10.2011, 18:40
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от goldlider Посмотреть сообщение
2. Количество и тип переменных описанных в суперклассе должен содержать и подкласс?
Если вы имели ввиду количество и тип параметров конструктора суперкласса и подкласса, то — нет.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Jun 2010
Сообщений: 120
Цитата:
Сообщение от dimarik Посмотреть сообщение
Если вы имели ввиду количество и тип параметров конструктора суперкласса и подкласса, то — нет.
да я это имел ввиду.
Тогда исходя из ваших слов получается, что я могу без проблем написать вот так:

Код AS3:
public function Polygon(xpoints:Number = 20, ypoints:Number = 30)
Код AS3:
public function Rectangle(name:String = "Rect1", width:int = 100, height:Number = 100)
и никакой ошибки не будет.

Старый 20.10.2011, 19:16
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
в таком случае мы в классе Rectangle должны написать так?
Конечно нет. Какие значения туда передадутся, такие и примет конструктор суперкласса.
переменные xpoints и ypoints не объявлены в подклассе, соответственно такая передача их в суперкласс приведет к ошибке
Цитата:
и никакой ошибки не будет.
Все верно. Никакой ошибки не будет.

Старый 20.10.2011, 20:46
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 8  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
goodguy, а почему выходит такая ошибка: "Error #1063: Несоответствие количества аргументов в Rectangle().", если мы в подклассе объявили переменные, но не присвоили значение? Ведь можно же позже присвоить значение, т.е.
Код AS3:
public function Polygon(xpoints, ypoints)
Код AS3:
public function Rectangle(xpoints, ypoints, width, height) // Нельзя ли этим параметрам значения присвоить позже?
{
     super(xpoints, ypoints);
}


Последний раз редактировалось goldlider; 20.10.2011 в 20:48.
Старый 20.10.2011, 21:23
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 9  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
goodguy, а почему выходит такая ошибка: "Error #1063: Несоответствие количества аргументов в Rectangle().", если мы в подклассе объявили переменные, но не присвоили значение?
Она происходит не из-за этого, а из-за того, что где-то создается экземпляр класса Rectangle, и в него передается не такое количество аргументов.
Не видя всего кода сложно сказать наверняка.

Старый 20.10.2011, 21:24
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 10  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от goldlider Посмотреть сообщение
public function Rectangle(xpoints, ypoints, width, height) // Нельзя ли этим параметрам значения присвоить позже?
Дык, — это же параметр! Как же можно параметру присвоить значения позже? Я про такое не слыхал.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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