Class 什么';在Dart中,不继承静态变量的基本原理是什么?

Class 什么';在Dart中,不继承静态变量的基本原理是什么?,class,types,static,dart,Class,Types,Static,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 Test

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'
类TestUpper{
静态最终字符串up='super';
字符串向上=10;
}
类TestLower扩展了TestUpper{
静态最终字符串低位='低位';
弦低=11;
} 
var lower=新的TestLower();

打印(较低。较低);// 是的,没有静态成员的继承。见:

静态方法的继承在Dart中几乎没有用处。不能重写静态方法。任何需要的静态函数都可以从其声明库中获得,并且不需要通过继承将其引入范围。经验表明,开发人员对继承的方法不是实例方法的想法感到困惑

当然,静态方法的整个概念是有争议的,但它保留在这里,因为许多程序员都熟悉它。Dart静态方法可以看作是封闭库的函数


我明白其中的道理,但不同意。如果要在扩展类中公开超类,则应该公开超类。当在没有反射的情况下工作时,我可以看到哪里是不必要的-只要看看代码但是当一般性地处理类时,非继承是一个真正的难题。请随时发布您的反馈。