Posted on 2006-11-16 20:28
itspy 阅读(1606)
评论(6) 编辑 收藏 所属分类:
JAVA技术
本人对JAVA有一定的了解,最近开始看一些C++的东西,遇到了JAVA与C++的如下不同点:就是JAVA与C++在覆盖或者是多态性上不太一样。
现写了两块代码证明如下,至于为什么会有如此原因,我也不明白,希望有能懂C++与JAVA的人能出来讲解一下。
#include <stdio.h>
#include "iostream.h"
class Base{
public: void show(){
cout<<"Base";
}
};
class ExBase : public Base
{
public: void show(){
cout<<"ExBase";
}
public: void showEnd(){
cout<<"EndClass";
}
};
void main(){
Base * base= new ExBase();
base->show();//打印Base
};
//文件一
package test;
public class Base {
static String abc="abc";
public void show() {
System.out.print("base");
}
}
//文件二
package test;
public class ExBase extends Base {
public void show() {
System.out.print("TestBase");
}
}
//文件三
package test;
public class Test {
public static void main(String[] args) {
Base base = new ExBase();
base.show();//打印Base
}
}
最后运行打印出来的是“TestBase”,也就是子类的函数起作用了。
按照相同的思路,我写了如下的C++代码:
//文件四
#include <stdio.h>
#include "iostream.h"
class Base{
public: void show(){
cout<<"Base";
}
};
class ExBase : public Base
{
public: void show(){
cout<<"ExBase";
};
void main(){
Base * base= new ExBase();
base->show();//打印Base
};
结果起作用的却是父类的代码,最后打印出来的是“Base”
他们都是子类覆盖了父内的函数,但是通用时却通过父类来调用。为什么类似的结构却产生了不同的结果,到底是因为C++与JAVA哪方面的不同产生的。