我正在使用actionscript 3编写一个flash游戏。在我的一个MovieClip类中,我开始编写一些函数和变量进行编码。所以我们都知道私有函数和变量不能在MovieClip之外访问,而公共函数和变量都可以。
所以这就是我的问题:为什么我们不只是总是使用公共功能?它会导致延迟问题吗?它是否返回一个特定的值,使其公开,使玩家做更多的工作?
另外,如果你没有在课堂上写作并放置框架代码,那么这些函数总是公开的。为什么是这样?为什么不在我的第一个问题的答案中出于某种原因让私有函数和变量出现在帧动作中?
答案 0 :(得分:7)
如果需要,您可以使用所有公开。
假设您的代码是麦当劳并且您是经理。您可以制作客户需要的东西public
,例如桌子,椅子和免费的补充苏打水机。但是,有些客户不需要访问,并且private
区域中的这些内容被仅限员工门锁定。你不希望没有知识或需要的人进入你的厨房,可能搞砸了。
最好只暴露需要暴露的东西,这样可以减少内部工作受到损害的可能性。当您使用大型代码库和一组人一起工作时,这一点更为重要。如果这是你的所有代码而且你是唯一一个能够看到它的人,那么它就不会那么重要了。但是,使用public / private来公开/限制属性/方法可以使您的生活更轻松,因为在使用该类的实例时它不会更加混乱。
答案 1 :(得分:3)
不总是使用公共访问的原因是因为即使在想要将一个类与另一个类一起使用时它更方便,也会让事情变得混乱。你需要的东西,以及你不需要的东西。为什么有不需要的?它们应该被收起并留给自己。这就是私有变量。它们不允许交互,因此它允许更重要的东西进行通信。我希望这会引起混乱。
答案 2 :(得分:2)
在进行面向对象设计时,您会发现您正在将代码写入类文件中。 当你创建一个Public方法时,你明确地说,在我的课外使用这个方法来帮助你实现目标。
使用私有方法来帮助防止任何人(例如你自己)说出任何混淆,不要使用这种方法来oustide我的班级。此方法适用于此调用,请勿尝试使用它。
例如
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设为私有您不能跳过错误检查,并且只有在我们准备删除用户时,此方法才会由类内部使用。
干杯,约翰。