接口和抽象类的区别

来源:互联网 发布:网站内链优化 编辑:程序博客网 时间:2024/06/17 04:49

接口

  • 使用interface定义接口。
  • 接口无法被实例化。
  • 是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现。

抽象类

  • 使用abstract定义
  • 抽象类不能创建实例对象
  • 含有抽象方法的类必须定义为abstract class 类型的,abstract class中的方法不必是抽象的
  • 抽象类中定义的抽象方法必须被子类实现 ,所以抽象方法不能定义为抽象构造方法和抽象静态方法
  • 如果子类没有实现父类中的所有方法 那么子类也必须定义为abstract class。

接口与抽象类的区别

语法上的区别

  • 抽象类中可以有构造方法,接口中不能有构造方法。
  • 抽象类中可以有普通成员变量,接口中不能有普通成员变量。
  • 抽象类和接口中都可以有静态成员变量,接口中的静态成员变量访问类型必须是public static final 类型的。
  • 抽象类中的抽象方法访问类型必须是public abstract , 接口中的抽象方法访问类型是public。
  • 抽象类中可以有静态方法 , 接口中不能有静态方法。
  • 一个类只能继承一个抽象类 但可以实现多个接口。

应用上的区别

  • 接口多实现在设计方面,相当于定义一个模板,
  • 抽象类更多应用于代码实现的方面(如: 代码的重用)。
原创粉丝点击