cc *_*ung 5 static class abstract dart
在一个abstract class,我希望定义静态方法,但我遇到了问题.
在这个简单的例子中
abstract class Main {
static String get name;
bool use( Element el );
}
class Sub extends Main {
static String get name => 'testme';
bool use( Element el ) => (el is Element);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
函数体期望方法'get:name'static String get name;
声明中是否有拼写错误,或者静态方法是否与抽象类不兼容?
Gün*_*uer 10
Dart不会将静态方法继承到派生类.因此,创建抽象静态方法(没有实现)是没有意义的.
如果你想在类中使用静态方法,Main你必须在那里完全定义它,并且总是这样称呼它Main.name
==编辑==
我确信我读过或听过Gilad Bracha关于它的一些论点,但现在找不到它.
这种行为是恕我直言,主要是在静态类型语言(我不知道很多动态语言).静态方法类似于顶级函数,其中类名称仅用作命名空间.静态方法与实例化对象无关,因此继承不适用.在静态方法被"继承"的语言中,这只是语法糖.Dart喜欢在这里更明确,并避免实例方法和静态方法之间的混淆(实际上它们不是方法而是函数,因为它们不作用于实例).这不是我的主要域名,但希望反正可能会有所帮助;-)
| 归档时间: |
|
| 查看次数: |
4480 次 |
| 最近记录: |