接口和抽象类:
相同点:
- 都无法实例对象
- 可以定义无方法体的方法
不同点:
- 抽象类是一种类只能单继承 接口可以多实现
- 抽象类中 可以有普通方法 接口在jdk1.8之前是不可以定义普通方法的
- 抽象类中可以有普通变量 接口中的变量都是由final修饰的
- 抽象类可以有构造器和主方法(抽象类中的构造器主要是在子类的构造方法中调用 负责初始化抽象类中的参数) 接口中不可以有构造器和主方法
- 抽象类中的方法普通可以由public private protected 和默认修饰 抽象方法可以由 public protected(或者不加修饰符)修饰 抽象方法必须由abstract修饰 接口方法默认由public修饰 接口中的抽象方法只能由public修饰 default在接口中只能修饰带有方法体的方法
使用场景:
- 当需要一些默认的方法实现时需要使用抽象类
- 当需要多继承时使用接口
- 当需要不断增加基础功能的时候使用抽象类 当使用接口时 增加功能就需要修改每个实现了该接口的实现类
版权声明:本文为xiansheng0813原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。