闪存 – AS3保护是破坏?
发布时间:2020-12-15 07:24:52 所属栏目:百科 来源:网络整理
导读:我有一个快乐的Flash AS3难题.给出以下代码: public class BaseClass{ protected var _A:uint;}public class ExtendedClass extends BaseClass{ public static function readBaseA(a:BaseClass) : uint { return a._A; }} 所以你看,静态函数正在使用它读取B
我有一个快乐的Flash AS3难题.给出以下代码:
public class BaseClass { protected var _A:uint; } public class ExtendedClass extends BaseClass { public static function readBaseA(a:BaseClass) : uint { return a._A; } } 所以你看,静态函数正在使用它读取BaseClass的受保护成员的能力,返回_A. 但这不算,而Flash又向我咆哮: (hidden)ExtendedClass.as,Line 7 1178: Attempted access of inaccessible property _A through a reference with static type BaseClass. 在Java中,这没关系.我认为Java是基本OO的参考实现. 如果我从readBaseA方法中删除’static’,那么现在它是一个实例方法,我仍然无法从BaseClass实例中读取_A.但有趣的是,我可以从中读到它. 就像AS3区分这个受保护的成员和其他对象的受保护成员一样,尽管这些对象可能是与“this”相同类的实例. 有人在野外看到过类似的行为吗? 丰富 解决方法
_A受到保护,因此只能从同一个类或它的子类中访问它,因为它在这方面没有被声明为静态“类”实际上意味着“类实例”.
为了澄清,实例a无法访问实例b的私有或受保护属性,无论它们是否具有完全相同的类型,或者是否扩展另一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |