虚函数
虚函数其实是C++中的讲法,就是说将一个函数实现声明为虚函数,这样就为子类提供了一个默认的实现,子类可以选择进行重新实现,或者不进行实现。这样对应到java里,其实就是java里的普通函数。虚函数是可以由子类进行无限覆盖的函数,另外自己也可以进行实现,而java的普通成员函数就可以做到,C++的普通函数就不行,否则就报重复定义error了,必须得加上virsual关键字声明。
纯虚函数
也是C++的讲法,与虚函数的区别就是声明的地方不能有实现,完全交给子类,相当于定义保留了一个接口。
C++中纯虚函数形式为:virtual void print() = 0;
对应到java中,就是抽象方法的概念,也就是abstract声明的函数。
JAVA中抽象方法定义形式:abstract void print();
抽象类
C++与JAVA中都有这个概念,在C++中,只要一个类中包含了一个纯虚函数,那么这个类就是一个抽象类;而在JAVA中,如果一个类中包含有一个抽象方法,由于JAVA有规定,这种情况下,这个类必须要用abstract来修饰,也就是一个抽象类了。
C++与JAVA中的抽象类有个共同点,就是抽象类不能直接拿来实例化,因为其中有抽象的函数,只能通过实现了这些函数的子类实例化。
接口
C++中没有独立的接口的概念,其实就是成员函数全部为纯虚函数的类,子类必须对他们进行全部实现。
JAVA中有独立的接口概念,就是interface修饰的类,跟C++中的纯虚基类换汤不换药,代码看起来样式不一样而已,另外,java中的接口在声明的时候必须都定义为public的。