Приватная функция и приватные переменные во flash as3? - PullRequest
0 голосов
/ 25 мая 2011

есть определения классов, где все их методы являются частными у меня вопрос, почему они закрытые, потому что я пробовал код, в котором я изменил весь модификатор приватного доступа на public и ничего не изменилось!

что если вы сделаете экземпляр этого класса закрытым для всех его методов, как вы сможете получить к нему доступ в другом классе. Потому что я знаю, что частные методы доступны только для класса, где они объявлены! будет ли экземпляр этого класса иметь доступ к суперклассу? с приватными методами!

для приватных переменных, мне до сих пор не ясно, зачем создавать приватную переменную, а затем использовать метод получения и установки, когда вы можете просто сделать ее публичной! эти переменные называются статическими? причина на пути я понимаю, что частные функции и частные переменные являются статическими? я прав?

я знаю, я просто очень запутался! Потому что я новичок во флэш-памяти as3, и изучал его уже полторы недели!

1 Ответ

4 голосов
/ 25 мая 2011

private просто означает, что вы можете получить доступ к свойству или методу только из этого класса.Трудно объяснить, почему это полезно, но вот несколько примеров:

Только для чтения: Возможно, вы захотите иметь свойство только для чтения.то есть.это свойство изменяется кодом внутри содержащего его класса, но вы хотите получить доступ к текущему значению из другого места с помощью getter .

Инкапсуляция: Использование private - этов основном просто способ сохранить ваш код чистым и структурированным.Если вам нужно поработать над проектом позже, вы можете четко увидеть, какие свойства изменяются только в текущем классе, а какие методы вызываются только из текущего класса.Сохраняет необходимость возврата и гарантирует, что у вас нет случайного класса, изменяющего ваши значения в другом месте.

Еще одна тактика, которая потребует использования закрытых свойств, - это значение, которое вы можете увеличивать, и запуск действия сеттера.в соответствии с этим.

Например.

У вас есть свойство под названием _currentSlide в пределах Slideshow.У вас есть установщик, который выглядит следующим образом:

public function set currentSlide(num:int):void
{
    _currentSlide = num;

    // do logic for swapping the visual slide to
    // the new slide
}

Это означает, что вы можете легко перейти:

myslideshow.currentSlide ++;

Чтобы увеличить свойство _currentSlide И загрузить следующий слайд в поле зрения.

Если вы хотите, чтобы свойства были доступны только внутри класса И ТАКЖЕ классы, расширяющие этот класс, используйте protected.Это дает вам в основном те же возможности только для чтения, что и использование private с getter, за исключением того, что вы все равно можете устанавливать свои свойства из расширенных классов.

Кроме того, static и private не являются-связанные с.static означает, что вы можете получить доступ к свойству или методу, не создавая экземпляр класса.В качестве примера рассмотрим класс Math.random, cos, round и т. Д. Являются static методами класса Math.

Вот пример:

public class EG
{
    public static function hello():void
    {
        trace("hello");
    }
}

Теперь вместо этого:

var t:EG = new EG();
t.hello();

Вы можете просто сделать:

EG.hello();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...