有关OO多态,C++高手且JAVA高手请进
与同事切磋java及C++,在多态这块困惑了
事情其实是非常小小的:有父类Father及两个子类Boy,Girl。三类都是普通类,非抽象。有一公有函数test:
void test(),各自打印输出Father,Boy,Girl
现在main中:
java:
Father f = new Father();
Boy b = (Boy)f;
Girl g = (Girl)f;
f.test();
b.test();
g.test();
问:先不要测试,输出什么?为什么?
C++:
Father *f = new Father;
Boy *b = (Boy*)f;
Girl *g = (Girl*)f;
f->test();
b->test();
g->test();
delete f;
问:这种情况下输出什么,为什么?
最后请java及c++同时都是高手的高手来解答一下:
为什么会有这种区别?