在Java中,子类中可以重载父类的方法,在C++ 中,子类中对父类的中方法的重载实际上是覆盖
在C++中
Homer.h
class Homer
{
public:
Homer(void);
~Homer(void);
char doh(char c);//父类中的方法
void test();
};
Homer.cpp
char Homer::doh(char c)//父类中的方法
{
cout<<"print char"<<endl;
return 'c';
}
void Homer::test()//该方法可以在子类的实例中被调用
{
cout<<"test homer"<<endl;
}
Hart.h
class Hart :
public Homer
{
public:
Hart(void);
~Hart(void);
int doh(int i);//子类中试图重载父类的方法,但实际上是覆盖了子类的方法
};
Hart.cpp
int Hart::doh(int i)
{
cout<<"print int"<<endl;
return 8;
}
main函数
Hart myhart;
myhart.doh(50);
myhart.test();
Hart的实例myhart只能调用 int Hart::doh(int i)这个方法
在java中
class Homer {
char doh(char c) {//子类中的方法
print("doh(char)");
return 'd';
}
float doh(float f) {//子类中重载的方法
print("doh(float)");
return 1.0f;
}
}
class Milhouse {}
class Bart extends Homer {
void doh(Milhouse m) {//父类可以重载子类的方法
print("doh(Milhouse)");
}
}
public class Hide {
public static void main(String[] args) {
Bart b = new Bart();
b.doh(1);
b.doh('x');
b.doh(1.0f);
b.doh(new Milhouse());
}
水平有限,有错请指出