2013-07-13 63 views
1

飞镖代码:无法访问Dart中父类的静态变量?

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?

回答

2

从DART编程语言规范:

一类的static members是其静态methodsgetterssettersstatic variables

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

所以,如果你在声明超一些静态成员,那么这些成员在子类中不能被继承。

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


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

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