2

我正在用actionscript 3 编写一个flash 游戏。在我的一个MovieClip 类中,我通过编写一些函数和变量开始编码。所以我们都知道,私有函数和变量不能在 MovieClip 之外访问,而公共函数和变量可以。

所以我的问题来了:为什么我们不总是使用公共函数?它会导致延迟问题吗?它是否返回一个特定的值,使其公开,让玩家做更多的工作?

此外,如果您不是在类中编写并放置框架代码,则这些函数始终是公共的。为什么是这样?在我的第一个问题的答案中,无论出于何种原因,为什么不让私有函数和变量也出现在框架操作中?

4

3 回答 3

7

如果需要,您可以使用所有公共。

假设您的代码是一家麦当劳,而您是经理。你做客户需要的东西public,比如桌子、椅子和免费的补充汽水机。但是,有些东西是客户不需要访问的,而您将这些东西放在由员工专用private锁住的区域中。您不希望没有知识或需要在您的厨房里的人,可能会搞砸一些事情。

只公开需要公开的内容是一种很好的做法,这样可以减少其内部工作受到损害的机会。当您使用大型代码库和一群人一起工作时,这一点更为重要。如果它是你所有的代码,并且你是唯一一个会看到它的人,那么它可能不会那么重要。但是,使用 public/private 来公开/限制属性/方法可以让您的生活更轻松,因为在使用该类的实例时它不会那么混乱。

于 2013-04-27T22:59:00.683 回答
3

不总是使用公共访问的原因是因为即使在想将一个类与另一个类一起使用时更方便,它也会使事情变得混乱。会有您需要的物品,以及您不需要的物品。为什么有那些不需要的?他们应该被收起来并留给他们自己。这就是私有变量。他们不允许互动,所以它允许更重要的东西交流。我希望这有助于解决混乱。

于 2013-04-27T22:36:47.397 回答
2

在进行面向对象设计时,您会发现您正在将代码写入类文件中。当您将方法设为 Public 时,您明确表示,在我的课程之外使用此方法来帮助实现您的目标。

使用私有方法来帮助防止任何人(例如您自己)说,不要在我的班级之外使用这种方法。此方法用于此调用,请勿尝试使用它。

例如。

public function deleteAllUsers():void{
    // 1. check user is logged in
    // 2. check users are not active
    // 3. clean up another object.
    // 4. call _deteleAllusers
} 

private function _deleteAllUsers(){
    // delete from users (do no error checking.
}

从上面的例子中,调用 deleteAllUsers 做了很多检查。但是将方法 _deteleAllUsers 设为私有,您不能跳过错误检查,并且一旦我们准备好删除用户,该方法仅在类内部使用。

干杯,约翰。

于 2013-04-27T22:57:37.873 回答