2013-07-13 61 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中父類的靜態變量?

答:父類的靜態變量不能在子類中被訪問(因爲它自己),因爲它在子類中不存在(不是繼承的)。