Java中虚函数的概念,多态,动态分派

虚函数、多态、动态分派

//todo

😭,原来Java还真有虚函数的概念。或者说没有虚函数的关键字,有这个相同的概念(多态)。

C++有点烂,还是学一下吧。

Java中有没有虚函数的概念

Java有虚函数对应的概念-多态,没有虚函数或者说普通函数就是虚函数。

定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。

百度百科

Java中没有虚函数的概念,普通函数就相当于C++的虚函数。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数。

C++ 对应虚函数就是多态的概念,或者说C++虚函数的存在就是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数。

Java抽象函数(纯虚函数)

   抽象函数或者说是纯虚函数的存在是为了定义接口。

   C++中纯虚函数形式为:virtual void print() = 0;

   Java中纯虚函数形式为:abstract void print();

多态

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象

重写对应的也就是动态分派。

由于重写导致需要确定是哪一个类的实例才可以知道时哪一个方法,所以需要知道运行时类型,这是动态分派。

动态分派

动态分派请看下面: