当我尝试使用继承时,为什么从dart中得到以下错误?

时间:2012-11-13 04:51:41

标签: inheritance dart

当我跑步时:

#import('package:logging/logging.dart');

class Trace extends Logger {
    Trace(String name) : super(name);
}
达特说:

'file:///home/jim/Code/dart/trace/Trace.dart': Error: line 6 pos 26: super class constructor 'Logger.' not found
    Trace(String name) : super(name);

我正在关注技术概述中的示例:

class Square extends Rectangle {
  Square(num size) : super(size, size);
}

我做错了什么?

2 个答案:

答案 0 :(得分:1)

Logger类没有任何构造函数。它有工厂。​​

您尝试创建一个扩展Logger的类,并指定了一个尝试调用Logger默认构造函数的默认构造函数,该构造函数不存在。

也许你正在寻找这样的东西:

import 'package:logging/logging.dart';

class Trace extends Logger {
  factory Trace(String name) {
    return new Logger(name);
  }
}

main() {
  var i = new Trace('foo');

  i.on.record.add((LogRecord record) {
    print(record.message);
  });

  i.severe('blaa!');
}

答案 1 :(得分:0)

发生错误是因为您尝试扩展只有工厂构造函数的类(Logger)。正如线程abstract classes and factory constructors所建议的那样,您应该考虑实施Logger而不是扩展它。