C#、C++、JAVA中虚函数和抽…
来源:互联网 发布:手机淘宝看五星好评 编辑:程序博客网 时间:2024/05/17 20:01
原文地址:C#、C++、JAVA中虚函数和抽象函数的概念对比作者:北风呼啸
1、C++中函数被定义为虚函数的方法是在函数名前加virtual,虚函数可以有自己的具体内容,也可以不含有函数实现内容,称为纯虚函数。这里未指明为纯虚函数的函数均默认为非纯虚函数。纯虚函数的表示形式为virtualintgetNum()=0;后面加"==0"表示函数无实现内容。含有虚函数的类可以实例化,可当作普通类来使用,但含有纯虚函数的类只能被继承后才能使用,且子类中必须实现父类的纯虚函数,这种情况下父类称为抽象类。
2、java中没有虚函数的概念,普通函数就相当于C++中的虚函数,不过可以在函数前加final使函数不能被重写。java中的含有抽象函数,相当于C++中的纯虚函数,java的抽象函数只能在抽象类中定义。java的抽象类不能被实例化,抽象类的子类必须实现全部抽象函数。可见java和C++中,虚函数的相关概念本质上是一致的。
3、C#整合了java和C++,对虚函数有了更明细的划分。定义了虚函数和抽象函数。虚函数定义时,在函数前加virtual,函数必须有实现,在子类中可以重写也可以不重写虚函数,重写虚函数时应在重写的函数前加override关键字。抽象函数不能含有函数实现,类似于接口,在继承的子类中必须重写该函数。另外,抽象函数只能定义在抽象类中,在普通类中定义抽象函数会报错。
可简单对比理解如下:
C++: 虚函数 纯虚函数
java: 普通函数 抽象函数
C#: 虚函数 抽象函数
三种语言相对应的概念是基本一致的。java普通函数就可以被子类重写,而C++、C#中只有虚函数、纯虚函数或抽象函数可以被子类重写;java的纯虚函数及C++、C#的抽象函数对应的类都是抽象类,且抽象类均不能实例化,只能被子类继承。
0 0
- C#、C++、JAVA中虚函数和抽…
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- 【技术】C#、C++、JAVA中虚函数和抽象函数的概念对比
- C和Java中函数的可变参数列表
- C和Java中函数的可变参数列表
- C中strtok()函数和strtok_r()函数
- C中strtok()函数和strtok_r()函数
- [C/C++]C++中虚函数的原理和虚函数表
- [C/C++]C++中虚函数的原理和虚函数表
- c/c++-虚函数和重载
- Android NDK(JNI)学习总结一:Java代码中申明native函数-Java调用C函数,并在C函数中访问java类和方法、属性
- Java?C++?虚函数?抽象?
- c语言中static 变量和函数
- 浅谈C中malloc和memset函数
- C中malloc和free函数
- C和C++中函数调用约定
- 【VC++ 程序共享】 游戏…
- 【资料共享】 推荐一些C#相关…
- 【孙鑫Java教程笔记】第一课:Java…
- 【孙鑫Java教程笔记】第二课 Java …
- 【复习拾遗】 汇编语言
- C#、C++、JAVA中虚函数和抽…
- 【Java难点】 String类与Stri…
- Radio button 使用方法总结
- Android studio导入工程很卡及下载网络jar很慢问题总结
- 拼音转换类
- swift: Swift中static和class的使用
- java内部类
- 一台机器上部署多个tomcat 服务
- Leet Code OJ 168. Excel Sheet Column Title [Difficulty: Easy]