接口、抽象类(纯虚类)、重载、重写

来源:互联网 发布:剑灵烛魔武器属性优化 编辑:程序博客网 时间:2024/04/27 18:11

一、接口与抽象类

一个接口在所有类的外面定义了一组相关的方法。一个接口定义了一个应用程序编程接口,它独立于任何类层次的接口。接口对于支持单继承的语言特别重要,如C#和java。一个包含某个接口中声明的所有方法的类称为实现了这个接口。

一个抽象类是一个未完全定义的类,声明了所有的方法但是为完全定义。它的一些行为是故意留给子类来定义的,因此抽象类不能够实例化,只可以创建具体子类的实例。

如果派生类是基类的更加特别的类型时,抽象类很有用,特别是在抽象类中有一些派生类要使用的共同共能时。

当一些不相关的类需要提供一些相同的方法调用时,并且不同类之间这些方法的实现相差很大,接口就很有用。

二、重载与重写

重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。方法重写发生在父类与子类之间,两个类存在继承关系,方法重写时方法的定义(修饰符,返回类型,参数列表)必须相同,只是方法体(方法实现)不同。

三、虚函数和纯虚函数

首先:强调一个概念
定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”
 virtual void funtion1()=0

虚函数它虚就虚在所谓“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。 虚函数只能借助于指针或者引用来达到多态的效果。

0 0
原创粉丝点击