加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

闪存 – 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的私有或受保护属性,无论它们是否具有完全相同的类型,或者是否扩展另一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读