下面的例子说明了虚方法与非虚方法的区别。
例子:
a.F(); //输出A.F
b.F(); //输出B.F
a.G(); //输出B.G
b.G(); //输出B.G
}
}
例子中,A类提供了两个方法:非虚的F和虚方法G.类B则提供了一个新的非虚的方法F,从而覆盖了继承的F;类B同时还重载了继承的方法G.那么输出应该是:
A.F
B.F
B.G
B.G
注意到本例中,方法a.G()实际调用了B.G,而不是A.G.这是因为编译时值为A,但运行时值为B,所以B完成了对方法的实际调用。
相关文章: