gpt4 book ai didi

actionscript-3 - 柔性 : Access static constant from parent

转载 作者:行者123 更新时间:2023-12-02 05:11:13 25 4
gpt4 key购买 nike

为什么我不能将父类中定义的静态常量视为 Flex 中子类的属性?

弹性

class A {
public static const MAX:int = 100;
}

class B extends A {}

A.Max; // Valid
B.Max; // Invalid

Java

class A {
public static final int MAX = 100;
}

class B extends A {}

A.Max; // Valid
B.Max; // Valid

最佳答案

Quick n' dirty hack:

为了将常量 MAX 视为 B 的属性,您必须重新定义 MAX 并将其设置为等于 A .MAX:

class B extends A {
public static const MAX:int = A.MAX;
}

Static properties not inherited

静态属性不被子类继承。这意味着不能通过子类的实例访问静态属性。只能通过定义它的类对象访问静态属性。例如,下面的代码定义了一个名为 Base 的基类和一个名为 Extender 的扩展 Base 的子类。在 Base 类中定义了一个名为 test 的静态变量。以下摘录中编写的代码在严格模式下无法编译,在标准模式下会产生运行时错误。

package {
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
trace(myExt.test);// error
}
}
}

class Base {
public static var test:String = "static";
}

class Extender extends Base { }

访问静态变量test的唯一方法是通过类对象,如下代码所示:

Base.test;

但是,允许使用与静态属性相同的名称来定义实例属性。这样的实例属性可以在与静态属性相同的类中或在子类中定义。例如,前面示例中的基类可能有一个名为 test 的实例属性。下面的代码编译执行是因为实例属性被Extender类继承了。如果将测试实例变量的定义移动(而不是复制)到 Extender 类,代码也会编译和执行。

package
{
import flash.display.MovieClip;
public class StaticExample extends MovieClip
{
public function StaticExample()
{
var myExt:Extender = new Extender();
trace(myExt.test);// output: instance
}
}
}

class Base
{
public static var test:String = "static";
public var test:String = "instance";
}

class Extender extends Base {}

关于actionscript-3 - 柔性 : Access static constant from parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com