gpt4 book ai didi

flash - 有没有办法子类化和覆盖自定义命名空间中的方法?

转载 作者:行者123 更新时间:2023-12-05 01:37:58 25 4
gpt4 key购买 nike

假设我有一个类,其方法定义在公共(public)、 protected 或内部以外的命名空间中......

package com.foo.bar
{
import com.foo.my_name_space
public class bar
{
private var _vabc:String
private var _v123:String

protected function set123(val:String):void{
_v123 = val;
}

my_name_space function setABC(val:String):void{
_vabc = val;
}

}
}

现在我想在子类中扩展和覆盖它...

package com.foo
{
import com.foo.bar.bar
import com.foo.my_name_space

public class foo extends bar
{
override protected function set123(val:String):void{
super.set123(val);
}

.... ????? ...

}
}

很容易覆盖 protected 、公共(public)的等方法,但是有没有办法覆盖在命名空间 *my_name_space* 中定义的 setABC 方法?

我尝试了以下语法,似乎通过了 FlashBuilder 预编译器检查但不起作用。

    use namespace my_name_space override function my_name_space::setABC(val:String):void

我尝试了许多其他语法组合,但大多数都没有通过预编译检查。 (许多有某种类型的命名空间错误)我觉得这是不可能的,但想知道是否有人有任何想法?

最佳答案

詹姆斯的回答是对的。您只是未能正确添加 use namespace 指令。此示例按预期工作:

package {
import flash.display.Sprite;
import flash.events.Event;
import test.Base;
import test.Child;
import test.my_namespace;

public class Main extends Sprite {

use namespace my_namespace;

public function Main():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}

private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point

var base:Base = new Base();
base.test();

var child:Child = new Child();
child.test();
}

}

}

package test {
import test.my_namespace;
use namespace my_namespace;

public class Base {

my_namespace function test():void {
trace("Base");
}

}

}

package test {
import test.Base;
import test.my_namespace;
use namespace my_namespace;

public class Child extends Base {

public function Child() {

}

override my_namespace function test():void {
trace("Child");
super.my_namespace::test();
}
}

}

package test {
public namespace my_namespece;
}

关于flash - 有没有办法子类化和覆盖自定义命名空间中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422544/

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