发生什么事了
init()?更好的设计可能会完全消除该方法,或者至少放宽该方法在子类的构造函数之后执行的要求。
init()在构造函数完成之前,请确保不会使正在构造的对象对任何其他线程可见,因为这会导致并发错误。
作为一种(丑陋的)选择,抽象方法可以由子类实现为伪构造函数:
abstract class base { base() { ctor(); init(); } abstract void ctor(); abstract void init();}
发生什么事了
init()?更好的设计可能会完全消除该方法,或者至少放宽该方法在子类的构造函数之后执行的要求。
init()在构造函数完成之前,请确保不会使正在构造的对象对任何其他线程可见,因为这会导致并发错误。
作为一种(丑陋的)选择,抽象方法可以由子类实现为伪构造函数:
abstract class base { base() { ctor(); init(); } abstract void ctor(); abstract void init();}