一,
如果不改private,保持原来的protected,那么就相当于 class B 重写了 class A 的 initialize() 方法。
那么当你用 class B 的实例对象的引用调用 initialize() 方法时调用的就是你重写的 initialize() 方法,也就是class B 的initialize() 方法。
这时class B 的 initialize() 方法输出的是 class B 的 f1 的值,但是这时 这个 f1 是 0,还没有赋值为3, 所以输出的是 0;
二,
如果将 protected 改为 private 那么就不存在重写 initialize(),调用的就是class A的 initialize() 方法。
GO TO FULL VERSION