每当我定义这样的私有方法时:
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
。
为什么呢?如何重新定义私有方法以便在子类中调用它?
答案 0 :(得分:3)
私有成员可以被视为库成员。在库中,有或没有前置下划线的成员之间没有区别。
因此,如果您在同一个库中,则应该能够重新定义子类中的方法。