虚函数、纯虚函数通俗解释(C++,Java)
来源:互联网 发布:csol显卡优化 编辑:程序博客网 时间:2024/05/30 05:00
c++
虚函数
1.定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数 [1]
2.语法:virtual 函数返回类型 函数名(参数表) { 函数体 }
3.用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数,也就是允许子类override父类同名方法。
虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型(也就是完全相同的方法,不能只是函数名相同。)。以实现统一的接口,不同的定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。
当程序发现虚函数名前的关键字virtual后,会自动将其作为动态联编处理,即在程序运行时动态地选择合适的成员函数。虚函数是C++多态的一种表现。动态联编规定,只能通过指向基类的指针或基类对象的引用来调用虚函数,其格式:
1.指向基类的指针变量名->虚函数名(实参表)
2.基类对象的引用名. 虚函数名(实参表)
使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价。如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virtual 函数名=0 ,例如:virtual void fun() = 0,我们把这样的函数(方法)称为纯虚函数。如果一个类包含了纯虚函数,称此类为抽象类。
总结:如果一个子类想要重写父类的方法,那么父类的这个成员方法必须是virtual的,也就是这个方法必须是虚函数。
java
在java中,所有方法默认就是虚拟的,只要方法不是声明为final类型的,那么肯定就是虚函数,不用为方法显示声明为virtual。在<core java2 :volum I>中提到:"In Java, you do not need to declare a method as virtual. Dynamic binding is the default behavior. If you do not want a method to be virtual, you tag it as final"。所以我们发现,在java中,子类可以重写(override)父类的方法,而父类没有声明virtual。
- 虚函数、纯虚函数通俗解释(C++,Java)
- 纯虚函数举例解释
- c++虚函数和纯虚函数通俗理解
- 【C/C++】纯虚函数
- [C++]虚函数与纯虚函数
- C++: 浅谈虚函数、纯虚函数
- C++::关于虚函数,纯虚函数
- [C++]虚函数和纯虚函数
- c++-虚函数与纯虚函数
- C++、JAVA与C#中的多态虚函数、纯虚函数(抽象函数)
- C++、JAVA与C#中的多态虚函数、纯虚函数(抽象函数)
- C++、JAVA与C#中的多态虚函数、纯虚函数(抽象函数)
- 【C++】普通函数、虚函数和纯虚函数
- C/C++ 函数指针、虚函数、纯虚函数
- c/c++----------虚函数、虚继承、纯虚函数
- C方式实现C++纯虚函数
- 【c++】纯虚函数和抽象类
- C++:纯虚函数与抽象类
- 批量删除VC&VS中的临时文件方法
- http压力测试
- 化简问题
- Sublime Text 3 快捷键汇总
- myeclipse删除工程后出现Could not publish to the server
- 虚函数、纯虚函数通俗解释(C++,Java)
- 15-11-16 Eclipse 操作菜单汉译之Edit [编辑]
- Codeforces Gym 100796E Permutation Polygon(线段树)
- Cocos Play提升3倍转化率:手游微端革命
- LeetCode:Bulls and Cows
- dom4j 解析xml字符串 去除.DTD校验
- 印章图片制作操作手册
- java使用域账号登陆,ldap协议
- java POI 将txt文件导入到excel中