接口和抽象类的区别和应用场景

接口和抽象类:

相同点:

  • 都无法实例对象
  • 可以定义无方法体的方法

不同点:

  • 抽象类是一种类只能单继承   接口可以多实现
  • 抽象类中 可以有普通方法  接口在jdk1.8之前是不可以定义普通方法的
  • 抽象类中可以有普通变量 接口中的变量都是由final修饰的
  • 抽象类可以有构造器和主方法(抽象类中的构造器主要是在子类的构造方法中调用  负责初始化抽象类中的参数) 接口中不可以有构造器和主方法 
  • 抽象类中的方法普通可以由public   private   protected 和默认修饰   抽象方法可以由 public protected(或者不加修饰符)修饰  抽象方法必须由abstract修饰    接口方法默认由public修饰 接口中的抽象方法只能由public修饰  default在接口中只能修饰带有方法体的方法 

使用场景:

  • 当需要一些默认的方法实现时需要使用抽象类
  • 当需要多继承时使用接口
  • 当需要不断增加基础功能的时候使用抽象类  当使用接口时 增加功能就需要修改每个实现了该接口的实现类

版权声明:本文为xiansheng0813原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。