关于C++ 与JAVA 中的多态,有点奇怪!高手帮帮我!!!
这里是 JAVA 的代码!
调用的是 子类的 display(),而在 C++ 中调用的是父类中的display()
不知道为什么????
高手帮帮我!!!
class Super
{
public int str=99;
public void display()
{
System.out.println("Method in Super Class");
System.out.println(str);
}
}
public class Deriver extends Super
{
public int str=88;
public void display()
{
System.out.println("method in Deriver Class");
System.out.println(str);
}
public static void main(String[] ar)
{
Super sup=new Deriver();
sup.str=33;
//这里调用的是子类的方法!!!
sup.display();
}
}
下面是 C++ 代码:
#include<iostream.h>
class Super
{
public:
void display()
{
cout<<"Method in Super Class"<<endl;
}
};
class Deriver:public Super
{
public:
void display()
{
cout<<"Method in Deriver Class"<<endl;
}
Deriver &Print()
{
cout<<"return this pointer"<<endl;
return *this;
}
};
int main(int argc, _TCHAR* argv[])
{
Super sup;
Deriver der;
Super *s=⊃
Deriver *d=&der;
sup=der;
//这里调用的是父亲类中的方法!
sup.display();
}
问题点数:20、回复次数:2Top
1 楼wchar(9527)回复于 2003-11-05 14:46:52 得分 0
在c++里好像要把display()设为虚函数才行Top
2 楼gyscsdn(geng)回复于 2003-11-05 18:18:34 得分 20
c++里要把display()设为虚函数,因为java 中除了staic和final函数,默认均为虚函数的Top




