在Java当中,只要子类继承了父类,父类当中非private、非final的所有方法都可以在子类中进行重写(Override);
C++中,则引入了virtual关键字,对子类继承父类抽象方法、子类继承父类普通方法、子类不可继承方法进行了划分。
1. 虚函数
父类为子类提供默认的函数实现,子类可以重写父类虚函数。子函数自动声明虚函数,virtual关键字可加可不加,例如:
class A{ }
{
public:
virtual void character(string s){
count<<"I am father class: "<<s<<endl;
}
};
class B : public A{
public:
void character(string s){
count<<"I am child class: "<<s<<endl;
}
};
2. 纯虚函数
C++中包含纯虚函数的类,可以理解为“抽象类”。同Java一样,抽象类不能创建对象,但是可以被子类继承; 纯虚函数可以理解为java当中的抽象方法,只提供方法声明,不提供具体实现,必须被Override。纯虚函数定义形式上可以表示如下:
class A{
public:
virtual void character2(String s) = 0;
virtual void character3(String s) = 0;
}
3. 普通函数
C++中的普通函数是静态编译的,只能够通过指针,引用类对象的方式调用,不可重写(Override)。