Java接口、Java抽象类、C++抽象类的区别

由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下:

  接口:

    接口用interface关键字定义,

    名字一般使用-able形式的形容词。

    接口通常定义抽象方法和常量,不能定义实例方法。

    接口和抽象类一样,不能通过new实例化。但是可以用来声明变量。

    接口中每个方法的默认修饰符是 public  abstract ,这意味着在在实现该方法时,必须将实现的该方法定义为public。

    接口中定义的所有的变量默认访问权限修饰符为 public final static .所以在接口中定义变量时应该使用常量的命名规则--全部大写。

  Java抽象类:

    使用abstract关键字修饰。

    不能使用new关键字实例化

    抽象类可以有或者没有抽象方法。但是有抽象方法的类必须定义为抽象类。在抽象类中可以定义在非抽象类中应有的数据元素,比如 变量, 实例方法等

  C++ 抽象类:

    通过在类中声明一个或者多个virtual函数为纯virtual函数,可以使一个成为抽象类。一个纯virtual函数(pure virtual  function)的声明如下:

      virtual  void draw() = 0 ;

    每个派生的具体类必须重写所有基类的純虚函数。virtual 函数和非 virtual函数的区别:

    virtual函数有函数的具体实现,并且提供派生类是否重写这些函数的选择权;相反,纯virtual函数并不提供函数的实现,需要派生类重写这些函数。

原文地址:https://www.cnblogs.com/caiyao/p/3683513.html