请教类重写的问题

Jim@luckeeinc.com 2011-03-02 03:37:51
如果有两个类A 和 B, 其中B是A的子类
都有各自的方法 比如test();
其中B中的test()重写了父类中的test()方法

C++中写 A *a = new B();
a->test();
这里用的a中的test

java中如果写 A a = new B();
a.test();
本以为也能会跟C++中一样调用a中的test(); 可运行后他调用的却是B中的test();查了一下网上说因为B重写了A中的test方法因此会调用子类中的test

是两者确实这方面是有区别的还是我理解有问题?谢谢
...全文
56 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jim@luckeeinc.com 2011-03-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xpdavis 的回复:]
在C++中,如果test有virtual修饰,那边a.test();就会调用子类的实现
JAVA中好像对类的声明有个abstract或者interface之类的修饰吧,记不太清楚了,楼主有兴趣可以查一下。
[/Quote]

谢谢 查了一下 两者确实是有区别的
Java中如果前面没有任何修饰的话可以认为都是virtual
e_board 2011-03-02
  • 打赏
  • 举报
回复
只有虚函数才能被覆盖,在c++重要用virtual修饰
铖邑 2011-03-02
  • 打赏
  • 举报
回复
在C++中,如果test有virtual修饰,那边a.test();就会调用子类的实现
JAVA中好像对类的声明有个abstract或者interface之类的修饰吧,记不太清楚了,楼主有兴趣可以查一下。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧