无法在Dart中访问父类的静态变量?

Fre*_*ind 1 dart

飞镖代码:

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

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

class CCC extends PPP {
}
Run Code Online (Sandbox Code Playgroud)

它打印:

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

NoSuchMethodError : method not found: 'name'
Receiver: Type: class 'CCC'
Arguments: [...]
Run Code Online (Sandbox Code Playgroud)

因此,无法在Dart中访问父类的静态变量吗?

mez*_*oni 5

根据Dart编程语言规范:

static members一类是它的静态methodsgetterssettersstatic variables

  • Superclass static membersnot in scope in subclasses,并且do not conflictsubclass members
  • 静态成员是never inherited
  • 静态成员never override anything

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

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


问:无法在Dart中访问父类的静态变量?

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