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();