Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flash as3中的私有函数和私有变量?_Flash_Actionscript - Fatal编程技术网

flash as3中的私有函数和私有变量?

flash as3中的私有函数和私有变量?,flash,actionscript,Flash,Actionscript,有些类定义的所有方法都是私有的 我的问题是为什么它们是私有的,因为我尝试了一个代码,在这个代码中,我将所有私有访问修饰符都更改为public,但没有任何更改 如果将该类的一个实例及其所有方法都设置为私有,那么如何在另一个类上访问该实例呢。因为我知道私有方法只能被声明它们的类访问!该类的实例是否能够访问超类的 这是私人方法 关于私有变量,我仍然不清楚为什么要创建一个私有变量,然后使用getter和setter,而您可以简单地将其公开!这些变量称为静态变量吗? 因为从我的理解来看,私有函数和私有变量

有些类定义的所有方法都是私有的 我的问题是为什么它们是私有的,因为我尝试了一个代码,在这个代码中,我将所有私有访问修饰符都更改为public,但没有任何更改

如果将该类的一个实例及其所有方法都设置为私有,那么如何在另一个类上访问该实例呢。因为我知道私有方法只能被声明它们的类访问!该类的实例是否能够访问超类的 这是私人方法

关于私有变量,我仍然不清楚为什么要创建一个私有变量,然后使用getter和setter,而您可以简单地将其公开!这些变量称为静态变量吗? 因为从我的理解来看,私有函数和私有变量是静态的? 我说得对吗

我知道我真的很困惑! 因为我刚刚接触flash as3,
已经研究了一周半了

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
。这是一个很好的习惯。