4

飞镖代码:

main() {
    print(PPP.name);
    print(CCC.name);
}

class PPP {
    static String name = "PPP";
}

class CCC extends PPP {
}

它打印:

PPP
Unhandled exception:
No static getter 'name' declared in class 'CCC'.

NoSuchMethodError : method not found: 'name'
Receiver: Type: class 'CCC'
Arguments: [...]

所以在 Dart 中不能访问父类的静态变量?

4

1 回答 1

8

来自 Dart 编程语言规范:

static members类的 是它的静态methodsgetters和。settersstatic variables

  • Superclass static membersnot in scope in subclassesdo not conflictsubclass members
  • 静态成员是never inherited.
  • 静态成员never override anything

因此,如果您在超类中声明了一些静态成员,那么这些成员不会在子类中继承。

它们保留在它们声明的那个类中,并且不与子类中的其他声明静态成员冲突。


Q: Dart 中不能访问父类的静态变量?

A:父类的静态变量不能在子类中访问(作为它自己的),因为它在子类中不存在(不继承)。

于 2013-07-13T13:55:04.627 回答