У меня радостная головоломка 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.
Но это не вычисляет, иФлэш лает мне в ответ:
(hidden)\ExtendedClass.as, Line 7 1178: Attempted access of inaccessible property _A through a reference with static type BaseClass.
На Java это нормально.И я считаю Java эталонной реализацией базового OO.
, если я уберу «static» из этого метода readBaseA, так что теперь это метод экземпляра, я все еще не могу прочитать _A из экземпляра BaseClass.Но, что интересно, я могу прочитать это из этого. А. 1011
Это похоже на то, что AS3 различает защищенные члены этого объекта и защищенные элементы других объектов, хотя эти объекты могут быть экземплярами того же класса, что и this.
Кто-нибудь видел подобное поведение в дикой природе?
Богатый