java与C++的虚函数比较java与C++的虚函数比较 class base { private void print() { System.out.println("base"); } public void doprint() { print(); } } class derive extends base { private void print() { System.out.println("derive"); } } class testVirtual { public static void main(String args[]) { base b = new derive(); b.doprint(); } } 运行结果:base ---------------------------------------------------------------------------- c++例子 class base { private: virtual void print() { printf("base\n"); } public: void doprint() { print(); } virtual ~base(){} }; class derived : public base { virtual void print() { printf("derived\n"); } }; int main(int argc, char* argv[]) { derived d; base& b = d; b.doprint(); return 0; } 运行结果: derived ---------------------------------------------------------------- 如果将上面JAVA中的private改为public, 则运行结果为derived 通过上面的例子, 应该可以看出C++与JAVA的虚函数异同点. 网上还有人把这二者的总结用下面的对比描述了一下: C++ Java 虚函数 -------- 普通函数 纯虚函数 -------- 抽象函数 抽象类 -------- 抽象类 虚基类 -------- 接口