接口和抽象类
Java中接口和抽象类小结,欢迎交流,指正错误。
这是一个非常经典的Java基础题,再次整理出来,除了巩固之用外也是对一些新特性的总结。
1. 接口和抽象类的区别
- 接口的方法默认为public abstract ,接口中的变量默认为public static final,在Java8之前接口所有的方法不能有实现;抽象类中可以有类变量,也可以有成员变量,还可以有非抽象方法。
- 一个类可以实现多个接口,但只能继承一个抽象类
- 一个类实现接口,要实现该接口的所有抽象方法。
- 接口中不能有构造方法,接口不能被实例化;但可以声明,必须引用一个实现该接口的对象。
- 抽象类可以有构造方法,但是不能被直接通过new进行实例化。但可以通过子类继承,实例化子类的时候抽象类也会被实例化。 这其实用到了多态,向上转型。父类引用指向子类对象。
- 从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。
2. JDK1.7及以前
在JDK1.7,接口中只包含抽象方法,使用public abstract 修饰。