先看看我给重载和覆写下的定义对不对:覆写(overriding):指父类和自类具有相同方法名、相同参数个数和类型的方法。
重载(overloading):指一个类中具有相同方法名,但参数个数或类型不完全相同的方法。下面两个例子中的eat方法是重载么??
例一:
class Father{
public void eat(){...}
}class Son{
public void eat(Food f){...}
}例二:
class Father{
private void eat(){...}
}class Son{
public void eat(Food f){...}
}下面例三中的eat方法是覆写么??
例三:
class Father{
private void eat(){...}
}class Son{
public void eat(){...}
}
重载(overloading):指一个类中具有相同方法名,但参数个数或类型不完全相同的方法。下面两个例子中的eat方法是重载么??
例一:
class Father{
public void eat(){...}
}class Son{
public void eat(Food f){...}
}例二:
class Father{
private void eat(){...}
}class Son{
public void eat(Food f){...}
}下面例三中的eat方法是覆写么??
例三:
class Father{
private void eat(){...}
}class Son{
public void eat(){...}
}
class Father{
public void eat(){...}
}class Son{
public void eat(Food f){...}
}例二:
class Father{
private void eat(){...}
}class Son{
public void eat(Food f){...}
}
这是在两个不同的类中,只有在同个类中才会是重载;
例三:
class Father{
private void eat(){...}
}class Son{
public void eat(){...}
}
两个类之间要复写,必须要有继承关系,如果对父类不需要反复调用的话,一般会声明为虚函数
class Father{
public:
void eat(){...}
void eat(Food f){....}
};class Son{
public:
void eat(){......}
void eat(Food f){...}
};例二:
class Father{
private void eat(){...}
void eat(Food f){...}
};class Son{
public:
void eat(){...}
void eat(Food f){...}
};
这样就能实现重载.
例三:
class Father{
public:
virtual void eat(){...}
};class Son:public Father
{
public void eat(){...}
};
这样就能实现复写