有类定义,其中所有方法都是私有的 我的问题是为什么它们是私有的,因为我已经尝试了一个代码,其中我将所有私人访问修饰符更改为公开,没有任何改变!
如果您将该类的所有方法设为私有,那该怎么做,如何在另一个类上访问该类。因为我知道私有方法只能在声明它们的类中访问!将该类的实例能够访问超类' 私人方法!
关于私有变量,我还不清楚为什么要创建一个私有变量然后使用getter和setter,当你可以简单地公开它时!这些变量是否称为静态? 因为我理解私有函数和私有变量是静态的? 我是对的吗?
我知道我真的很困惑! 因为我刚认为flash as3, 并且已经研究了一个半星期!
答案 0 :(得分:4)
private
只表示您只能从该类中访问该属性或方法。很难解释为什么这很有用,但这里有一些例子:
只读:您可能希望拥有只读属性。即。此属性由其中包含类的代码更改,但您希望使用 getter 从其他位置访问当前值。
封装:使用private
基本上只是一种保持代码清洁和结构化的方法。如果以后需要处理项目,可以清楚地看到哪些属性仅在当前类中更改,哪些方法仅在当前类中调用。保存您需要回溯并确保您在其他地方没有随机类来改变您的价值观。
另一种需要私有属性的策略是拥有一个可以递增的值,并让setter运行适合于此的操作。
例如
_currentSlide
内有一个名为Slideshow
的媒体资源
你有一个看起来像这样的setter:
public function set currentSlide(num:int):void
{
_currentSlide = num;
// do logic for swapping the visual slide to
// the new slide
}
这意味着你可以轻松地去:
myslideshow.currentSlide ++;
增加_currentSlide
属性并将下一张幻灯片加载到视图中。
如果您想拥有只能在类和ALSO类中访问的属性,那么可以使用protected
。除了您仍然可以通过扩展类设置属性之外,这基本上与使用private
的{{1}}具有相同的只读功能。
此外,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();