cc *_*ung 5 static types class dart
在 中Dart,如果一个类扩展另一个类,则扩展类继承所有超类的非静态变量,但不继承其任何静态变量。
例如
class TestUpper {
static final String up = 'super';
String upup = 10;
}
class TestLower extends TestUpper {
static final String low = 'lower';
String lowlow = 11;
}
var lower = new TestLower();
print( lower.lowlow ); // <== 11
print( lower.upup ); // <== 10
print( TestLower.low ); // <== "lower"
print( TestLower.up ); // <== No static getter 'get:up' declared in class 'TestLower'
Run Code Online (Sandbox Code Playgroud)
这是正常行为吗?如果是这样,如果有人解释其背后的基本原理,我将不胜感激。
是的,静态成员没有继承。请参阅语言规范的静态方法部分 (\xc2\xa710.7):
\n\n\n静态方法的继承在 Dart 中几乎没有用处。静态方法不能被重写。任何所需的静态函数都可以从其声明库中获取,无需通过继承将其带入作用域。经验表明,开发人员对非实例方法的继承方法的概念感到困惑。
\n当然,静态方法的整个概念是有争议的,但这里保留它是因为很多程序员都熟悉它。Dart 静态方法可以被视为封闭库的函数。
\n