C#、C++、JAVA中虚函数和抽象函数的概念对比
2016-10-12 11:18
330 查看
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#中只有虚函数、纯虚函数或抽象函数可以被子类重写;C++的纯虚函数及Java、C#的抽象函数对应的类都是抽象类,且抽象类均不能实例化,只能被子类继承。
相关文章推荐
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- 【技术】C#、C++、JAVA中虚函数和抽象函数的概念对比
- C#、C++、JAVA中虚函数和抽象函数的概念对比
- Java中的抽象函数与C++中的虚函数
- C++与C#对比学习:函数(三)函数名与变量名同名问题
- 对比C++理解Java函数传参数的方式
- 让我们来比较C#,C++和Java之间重写虚函数的区别
- c#语法与c++ 及 java语法的对比分析
- Java中的抽象函数与C++中的虚函数
- c++ java c#语言特性对比
- C++、JAVA与C#中的多态虚函数、纯虚函数(抽象函数)
- java、C++、C#、 Objective-c语言对比
- C++ 与 Java的成员函数对比
- C++与C#对比学习:函数(一)C#参数传递存在的问题
- C++、JAVA与C#中的多态虚函数、纯虚函数(抽象函数)
- Java中的抽象函数与C++中的虚函数
- C++ Java C#.net VB.net 语法对比(转)
- Java中的抽象函数与C++中的虚函数
- C++与C#对比学习:函数(四)重载函数匹配
- Java基础与案例开发详解のJava与C、C++、C#对比分析