如何创建可以在Dart中的子类中重新定义的私有方法?

时间:2014-01-06 20:57:25

标签: inheritance dart private-methods

每当我定义这样的私有方法时:

class ParentClass {

  sayHi() { _initiateGreeting(); }
  _initiateGreeting() { print("I'm a parent class"); }

}

无法在子类中重新定义它:

class ChildClass {
  _initiateGreeting() { print("I'm a child class"); } // redefining the method
}

现在,如果我创建一个ChildClass的实例并调用sayHi()方法,那么它就是实际被调用的ParentClass的私有方法:

var child = new ChildClass();
child.sayHi(); // outputs "I'm a parent class"

但是,如果_initiateGreeting()在任何地方公开(即从_中删除),则调用child.sayHi()会导致输出I'm a child class

为什么呢?如何重新定义私有方法以便在子类中调用它?

1 个答案:

答案 0 :(得分:3)

私有成员可以被视为库成员。在库中,有或没有前置下划线的成员之间没有区别。

因此,如果您在同一个库中,则应该能够重新定义子类中的方法。