用覆盖实现基类方法访问派生类方法

看到有人问基类方法怎么访问派生类方法,有人说这是不现实的,有人说把指针传过去(C++),有人说设计不合理。其实用覆盖,是可以实现基类访问派生类方法的。

再看调用代码

显示结果都是 C2F1。说明基类方法 F2 在这种情况下,调用的是派生类的 F1 方法(对于类内部来说,基类的 F1 同样已经被覆盖)。

return F1(); 改成 return this.F1() 呢?一样的,前者本来就是省略了 this 的。

那么派生类中 F1 调用 base.F1(),是否调用到基类的 F1 呢?当然是了。

你可能感兴趣的