Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   private конструктор в классе и подклассе. (http://www.flasher.ru/forum/showthread.php?t=85568)

an_artist 25.09.2006 21:57

private конструктор в классе и подклассе.
 
Класс "с":
Код:

class c {
        private function c()
        {
        }
}

Класс "d":
Код:

class d extends c{
}

Вызов:
Код:

var f:с = new с;
Выдает ошибку "The member is private and cannot be accessed",
а вызов:
Код:

var f:d = new d;
никакой ошибки не выдает, т.е. все выполняется нормально.

Почему так происходит? Конструктор класса d перестает быть private?

Storm[pfp] 25.09.2006 22:10

Атрибут private (закрытый) указывает компилятору, что имя может быть использовано лишь внутри класса, содержащего его определение.
extends делает один класс подклассом другого.

an_artist 25.09.2006 22:15

Цитата:

Сообщение от Storm[pfp]
extends делает один класс подклассом другого.

Ну да, класс d является подклассом c. Разве при этом он не наследует все методы класса c? По-идее — наследует. Значит наследует и конструктор? Раз в классе c конструктор был private, разве не должен он быть private и в d?

Storm[pfp] 25.09.2006 22:47

получается что не должен

Nirth 26.09.2006 00:19

по умолчанию, если ты не создал конструктор в ручную, AS пишет его сам, как
Код:

public function D() { super();}
вот и получается что он у тебя публичный у D

Бармалей 26.09.2006 08:36

Т. е. расширяя существующий класс, не забывай конструктор подкласса также указывать как закрытый:

Код:

class D extends {
        private function D()
        {
        }
}


an_artist 26.09.2006 10:52

Ясно. Спасибо.


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

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