我有一个快乐的Flash AS3难题。考虑下面的代码: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方法中删除'静态',所以现在它是一个实例方法,我仍然无法从BaseClass实例读取_A。但有趣的是,我可以从这里读到它。
就像AS3区分这个受保护的成员和其他对象的受保护成员,尽管这些对象可能是与'this'相同的类的实例。
有人在野外看过类似的行为吗?
丰富
不知道你的问题是什么,但肯定这AS是如何工作的。是否是“错误”是一个意见问题。 –