sni*_*tko 5 inheritance private-methods dart
每当我定义这样的私有方法时:
class ParentClass {
sayHi() { _initiateGreeting(); }
_initiateGreeting() { print("I'm a parent class"); }
}
Run Code Online (Sandbox Code Playgroud)
不可能在子类中重新定义它:
class ChildClass extends ParentClass {
_initiateGreeting() { print("I'm a child class"); } // redefining the method
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我创建了一个 aChildClass
和 callsayHi()
方法的实例,那么ParentClass
实际调用的是 a 中的私有方法:
var child = new ChildClass();
child.sayHi(); // outputs "I'm a parent class"
Run Code Online (Sandbox Code Playgroud)
但是,如果_initiateGreeting()
在任何地方都公开(即剥离了_
),则child.sayHi()
在输出中调用results I'm a child class
。
为什么?如何重新定义私有方法以便在子类中调用它?