本文主要讲述的是多态中重写在c++和java中的一些区别,主要是编译器方面的差异。
多态(重写)发生的条件是:(1)要有继承关系 (2)要有函数重写(在c++中必须是virtual重写,否则就是重定义,就是静态联编了。但是在java中是没有virtual这些关键字的,只要父子类函数名字完全相同就默认为就是相当于c++中的virtual重写) (3) 父类的指针或者引用指向子类对象。
代码如下,没有virtual重写时,是重定义的意思,就是静态联编。
#include <iostream>
using namespace std;
class Parent
{
public:
void getA()
{
cout << "我是父亲" << endl;
}
protected:
private:
int a;
};
class Child : public Parent
{
public:
void getA()
{
cout << "我是孩子" << endl;
}
protected:
private:
};
void main()
{
Child c1;
c1.getA(); //输出“我是孩子”
Parent* p = &c1;
p->getA(); //输出“我是父亲”
cout << "hello..." << endl;
system("pause");
return;
}
下面展示一段java的代码,在java中没有了很多c++方面的关键字