c++接口(抽象类,虚函数,纯虚函数)

  接口描述了类的行为和功能,而不需要完成类的特定实现。

  C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。

  如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:

class Box
{
   public:
      // 纯虚函数
      virtual double getVolume() = 0;
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

  设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。

  因此,如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重写纯虚函数,就尝试实例化该类的对象,会导致编译错误。

虚函数和纯虚函数的区别

虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!
纯虚函数在基类中是没有定义的,必须在子类中加以实现。

总结:

  java低版本中接口中只能写函数声明(没有具体实现),但是在高版本中也可以写一些字段属性了。这一点和C++中的带有纯虚函数的抽象类是一致的!记住c++中带有纯虚函数的类就是抽象类,抽象类不能实例化,最大的作用就是可继承作为基类。

 

posted @ 2020-10-19 20:23  那么强大  阅读(364)  评论(0编辑  收藏  举报