抽象类:
- 在多态中父类一般不需要方法体,而不含方法体的方法称为抽象方法
- 含有抽象方法的类称之为抽象类,抽象类与抽象方法均要用abstract修饰
- 如果父类中含有抽象方法,子类必须对抽象方法进行实现,否则也必须为抽象类
- 抽象类不能够创建对象,但可以有构造方法
- 一个抽象类可以不含有抽象方法,但是含有抽象方法的类一定是抽象类
- 抽象类不能用final修饰,否则其中的抽象方法将永远无法实现
接口:
- 当一个源文件中全是抽象方法时,可被定义为接口,用interface修饰
- 接口中不含构造方法
- 接口中的方法默认为抽象方法,方法前public abstract可省略
- 一个接口可以继承多个接口
- 接口命名规范:接口名需要以I开头
- 接口中的成员变量默认为用public static final 修饰,不能直接调用
- 实现接口中方法要使用implements
- 实现接口的同时可以继承接口中的变量
- 一个类如果不实现接口中所有方法,则该类必须为抽象类
- 一个类可以实现多个接口
两者的具体区别
- 抽象类用abstract修饰,接口用interface修饰
- 抽象类中可以定义具体方法,但接口不行,接口中的方法必须全是抽象方法
- 一个子类只能继承一个抽象类,用extends连接;一个子类可以继承多个接口,用implements连接
- 抽象类有构造方法,接口没有
- 抽象类可以定义任何合法的成员变量 接口只能定义public static final的变量即常量
- 抽象类可以定义任意合法方法; 接口中只能定义抽象方法,JDK8.0+可以定义多个static或default修饰的具体方法