【发布时间】:2022-01-24 00:29:23
【问题描述】:
在 PHP 中,有一种方法可以访问在继承者上定义/覆盖的静态属性值。
例如
class Foo {
public static $name='Foo';
public function who(){
echo static::$name;//the static operator
}
}
class Bar extends Foo {
public static $name='Bar';
}
$bar = new Bar();
$bar->who();
//Prints "Bar";
有没有办法用 Dart 语言做完全相同的事情?
【问题讨论】:
-
静态方法和变量只是定义它们的类的一部分。在扩展(或实现)时,您不会将它们放入子类中,因为它们不是类接口的一部分。
-
这是 PHP 的一个很好的特性。为设计开辟了巨大的可能性。我必须想出另一种方法来完成我想要的设计。
-
this 可能有帮助
-
我读过那个话题。这些建议确实满足了他的需要。不过我的有点不同。
-
如果你想让一个方法被派生类覆盖,让它成为一个非
static的方法。覆盖static方法通常没有意义,因为覆盖必然需要一个对象实例才能发生虚拟调度。static方法中“静态”的含义是它在编译时是可解析的。允许这种覆盖工作的语言只是因为它们允许调用类方法作为实例方法;如果这是您想要的,只需首先将其设为实例方法即可。
标签: flutter dart inheritance static