飞镖中的覆盖方法(如JAVA)

时间:2014-05-05 08:15:01

标签: dart

有没有办法在Dart中覆盖像JAVA这样的方法,例如:

public class A {
    public void handleLoad() {
    }
}

当覆盖时:

A a = new A() {
    @Override
    public void handleLoad() {
        // do some code
    }
};

3 个答案:

答案 0 :(得分:8)

不,Dart没有匿名课程。您必须创建一个扩展A的类并实例化它。

答案 1 :(得分:2)

没有,但在Dart中它没用,因为你可以重新分配功能:

typedef void PrintMsg(msg);

class Printer {
  PrintMsg foo = (m) => print(m);
}

main() {
  Printer p = new Printer()
  ..foo('Hello') // Hello
  ..foo = ((String msg) => print(msg.toUpperCase()))
  ..foo('Hello'); //HELLO
}

但是,您需要一些额外的样板来访问实例。

答案 2 :(得分:0)

使用类型功能:

    class A {
        final Function h
        A(this.h);
        void handleLoad(String loadResult) { h(loadResult); }
    }

    class A {
        final Function handleLoad;
        A(this.handleLoad);
    }

    A a = new A((String loadResult){
        //do smth.
    });