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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.09.2010, 14:53
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 1  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
По умолчанию Почему я не могу обращаться у свойствам расширенного класса?

У меня есть класс Unit, и есть класс Tank. В классе Unit описаны свойства и методы характерные для всех юнитов, а в классе Tank описаны только характерные для танков. Я делаю вот так:
Код AS3:
package {
    public class Unit {
    private var health:int;    
 
    public function Unit(_health:int) {
         this.health = _health;
    }
    }
 
}
 
package {
    public class Tank extends Unit {
    private var gun_size:int;
 
    public function Tank(_gun_size:int) {
        this.gun_size = _gun_size;
    }
    }
}
 
Потом в классе документа хочу создать экземпляр класса Tank.
var t1 = new Tank(23);
Получаю ошибку. Я что не так сделал с конструкторами, но не знаю что именно. Не подскажите? Я хочу чтобы когда танк создавался его свойству gun_size присваивалось 23, но при этом он же Юнит и здоровье тоже присваивалось, но этого не происходит из за ошибки. Как правильно?


Последний раз редактировалось FlashWizard; 28.09.2010 в 14:55.
Старый 28.09.2010, 15:00
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Код AS3:
public function Tank(_gun_size:int) {
        this.gun_size = _gun_size;
        super(50);
    }

Старый 28.09.2010, 15:04
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 3  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
А как к свойству надкласса обратиться? Внутри подкласса?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
К приватному? Никак. Пропишите его как protected и обращайтесь или напрямую или с помощью super.myMethod.


Последний раз редактировалось alatar; 28.09.2010 в 15:08.
Старый 28.09.2010, 15:08
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 5  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Если вот так:
Код AS3:
super.health = 100;
То flash ругается:
1178: Attempted access of inaccessible property health through a reference with static type Unit.

Добавлено через 1 минуту
А чем отличается protected от private?

Добавлено через 4 минуты
А я что не могу использовать свойства надкласса в экземпляре подкласса?
То есть если я в классе документа напишу вот так:
Код AS3:
var t1 = new Tank(23);
t1.health = 24;
Это будет не правильно?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В хелпе все расписано.

Добавлено через 2 минуты
Вам бы основы сначала почитать.

Добавлено через 4 минуты
Цитата:
Это будет не правильно?
За одно и про public почитайте. А также про геттеры и сеттеры.

Старый 28.09.2010, 15:19
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 7  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
Мука читал Essential AS3. Только на практике пока туговато.

Добавлено через 39 секунд
Код AS3:
var t1 = new Tank(23);
t1.health = 24;
Не подскажите что здесь не так?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Перечитайте там должно быть все расписано и с примерами.

Добавлено через 2 минуты
Не подскажите что здесь не так?
Код AS3:
package {
    public class Unit {
    public var health:int;    
 
    public function Unit(health:int = 100) {
         this.health = health;
    }
    }
 
}
 
package {
    public class Tank extends Unit {
    private var gun_size:int;
 
    public function Tank(_gun_size:int) {
        this.gun_size = _gun_size;
    }
    }
}
так сработает.

Старый 28.09.2010, 15:53
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 9  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
А что изменилось в коде?

Добавлено через 3 минуты
Ааа свойство health стало доступно из любого места программы... Точно я совсем забыл про это, теорию Мука я читал всю и у меня даже получалось, но выветривается всё без практики...

Добавлено через 26 минут
Спасибо, большое.

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

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

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


 


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


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