Java中抽象类和接口的区别
抽象类
包含抽象方法的一定是抽象类,但抽象类中不一定有抽象方法。抽象类只能被继承,不能被实例化。
接口
接口是一个抽象类型,是抽象方法的集合,不能被实例化
相同点
- 接口和抽象类都不能够被实例化
- 抽象类和接口都可以定义抽象方法,子类和实现类必须对这些抽象方法重写
不同点
-
抽象类有构造方法,主要用于子类实例化的时候,接口没有构造方法
-
抽象类中可以包含普通方法,接口在1.8以前只能定义抽象方法
-
抽象类只能单继承,而接口可以多继承
-
变量:抽象类中可以定义各种类型的成员变量,接口中只能是public static final修饰的静态常量
-
public abstract class People { int age=18; static String name="zhnagjiabin"; final String sex="nan"; static final int sno=110; } interface run{ public static final int no=45; int speed=10; }
抽象类的使用场景
约束子类具有共同的行为(不在乎其具体实现),拥有实例变量
接口的使用场景
约束多个实现类具有统一的行为,但是不在其具体实现,实现类中各个功能之间可能没有任何联系