虚函数、抽象类、抽象函数与接口的区别


1.虚拟函数与一般函数区别:

定义:

  虚拟函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行 时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例类。一般函数在编译时就静态地编译到了执行文件中,其 相对地址在程序运行期间是不发生变化的,也就是写死了的。

执行顺序:

  当调用一个对象的函数时,系统会直接去检查这个对象 申明定义的类,即申明类,看所调用的函数是否为虚函数;如果不是虚函数,那么它就直接执行该函数。而如果有virtual关键字,也就是一个虚函数,那么 这个时候它就不会立刻执行该函数了,而是转去检查对象的实例类,是否重新实现了该虚函数,如果重新实现,它就不会再找了,而马上执行该实例类中这个重新实 现的函数。如果没有,系统就会不停地往上找实例类,并对父类重复刚才在实例类里的检查,知道找到第一个重装了该虚函数的父类为止,然后执行该父类里重装后 的函数。

2.抽象类

定义:

  不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例。抽象类能够被用于类,方法,属性,索引器和事件,使用abstract在一个类声明中表示该类是抽象类,由其派生类实现。抽象类不能被封闭。

3.抽象函数

定义:

抽象方法必须声明在抽象类中。声明抽象方法时,不能使用virtual、static、private修饰符。在抽象类中抽象方法不提供实现。抽象方法不包含方法主体,必须由派生类以override方式实现此方法。

4.接口

接口的声明采用如下格式:

  修饰符 interface 接口名称:继承的接口列表
  { 接口内容;}

  

  一个接口可以从一个或多个基接口继承。

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM