接口
- 使用interface定义接口。
- 接口无法被实例化。
- 是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现。
抽象类
- 使用abstract定义
- 抽象类不能创建实例对象
- 含有抽象方法的类必须定义为abstract class 类型的,abstract class中的方法不必是抽象的
- 抽象类中定义的抽象方法必须被子类实现 ,所以抽象方法不能定义为抽象构造方法和抽象静态方法
- 如果子类没有实现父类中的所有方法 那么子类也必须定义为abstract class。
接口与抽象类的区别
语法上的区别
- 抽象类中可以有构造方法,接口中不能有构造方法。
- 抽象类中可以有普通成员变量,接口中不能有普通成员变量。
- 抽象类和接口中都可以有静态成员变量,接口中的静态成员变量访问类型必须是public static final 类型的。
- 抽象类中的抽象方法访问类型必须是public abstract , 接口中的抽象方法访问类型是public。
- 抽象类中可以有静态方法 , 接口中不能有静态方法。
- 一个类只能继承一个抽象类 但可以实现多个接口。
应用上的区别
- 接口多实现在设计方面,相当于定义一个模板,
- 抽象类更多应用于代码实现的方面(如: 代码的重用)。