flash as3中的私有函数和私有变量?
有些类定义的所有方法都是私有的 我的问题是为什么它们是私有的,因为我尝试了一个代码,在这个代码中,我将所有私有访问修饰符都更改为public,但没有任何更改 如果将该类的一个实例及其所有方法都设置为私有,那么如何在另一个类上访问该实例呢。因为我知道私有方法只能被声明它们的类访问!该类的实例是否能够访问超类的 这是私人方法 关于私有变量,我仍然不清楚为什么要创建一个私有变量,然后使用getter和setter,而您可以简单地将其公开!这些变量称为静态变量吗? 因为从我的理解来看,私有函数和私有变量是静态的? 我说得对吗 我知道我真的很困惑! 因为我刚刚接触flash as3,flash as3中的私有函数和私有变量?,flash,actionscript,Flash,Actionscript,有些类定义的所有方法都是私有的 我的问题是为什么它们是私有的,因为我尝试了一个代码,在这个代码中,我将所有私有访问修饰符都更改为public,但没有任何更改 如果将该类的一个实例及其所有方法都设置为私有,那么如何在另一个类上访问该实例呢。因为我知道私有方法只能被声明它们的类访问!该类的实例是否能够访问超类的 这是私人方法 关于私有变量,我仍然不清楚为什么要创建一个私有变量,然后使用getter和setter,而您可以简单地将其公开!这些变量称为静态变量吗? 因为从我的理解来看,私有函数和私有变量
已经研究了一周半了
private
只是意味着您只能从该类中访问属性或方法。很难解释为什么这是有用的,但这里有一些例子:
只读:您可能想要一个只读属性。此属性由其包含类中的代码更改,但您希望使用getter从其他地方访问当前值
封装:使用private
基本上只是保持代码整洁和结构化的一种方法。如果以后需要处理项目,可以清楚地看到哪些属性只在当前类中更改,哪些方法只在当前类中调用。使您无需回溯,并确保不会有随机类在其他地方更改您的值
另一种需要私有属性的策略是拥有一个可以递增的值,并让setter运行与之相应的操作
例如
在Slideshow
中有一个名为\u currentSlide
的属性您有一个如下所示的setter:
public function set currentSlide(num:int):void
{
_currentSlide = num;
// do logic for swapping the visual slide to
// the new slide
}
这意味着您可以轻松地:
myslideshow.currentSlide ++;
增加currentSlide属性并将下一张幻灯片加载到视图中
如果希望具有只能从类内访问的属性以及扩展该类的类,请使用protected
。这提供了与使用getter
的private
基本相同的只读功能,只是您仍然可以通过扩展类设置属性
而且,static
和private
是不相关的<代码>静态意味着您可以访问属性或方法,而无需创建类的实例。以数学
类为例random
、cos
、round
等等都是数学类的静态方法
下面是一个例子:
public class EG
{
public static function hello():void
{
trace("hello");
}
}
现在,不要这样做:
var t:EG = new EG();
t.hello();
您可以简单地执行以下操作:
EG.hello();
private
仅表示只能从该类中访问属性或方法。很难解释为什么这是有用的,但这里有一些例子:
只读:您可能想要一个只读属性。此属性由其包含类中的代码更改,但您希望使用getter从其他地方访问当前值
封装:使用private
基本上只是保持代码整洁和结构化的一种方法。如果以后需要处理项目,可以清楚地看到哪些属性只在当前类中更改,哪些方法只在当前类中调用。使您无需回溯,并确保不会有随机类在其他地方更改您的值
另一种需要私有属性的策略是拥有一个可以递增的值,并让setter运行与之相应的操作
例如
在Slideshow
中有一个名为\u currentSlide
的属性
您有一个如下所示的setter:
public function set currentSlide(num:int):void
{
_currentSlide = num;
// do logic for swapping the visual slide to
// the new slide
}
这意味着您可以轻松地:
myslideshow.currentSlide ++;
增加currentSlide
属性并将下一张幻灯片加载到视图中
如果希望具有只能从类内访问的属性以及扩展该类的类,请使用protected
。这提供了与使用getter
的private
基本相同的只读功能,只是您仍然可以通过扩展类设置属性
而且,static
和private
是不相关的<代码>静态
意味着您可以访问属性或方法,而无需创建类的实例。以数学
类为例random
、cos
、round
等等都是数学类的静态方法
下面是一个例子:
public class EG
{
public static function hello():void
{
trace("hello");
}
}
现在,不要这样做:
var t:EG = new EG();
t.hello();
您可以简单地执行以下操作:
EG.hello();
别担心。。只是一些建议:尽量使用private
。这是一个很好的习惯,不用担心。。只是一些建议:尽量使用private
。这是一个很好的习惯。