抽象类是使用了关键词abstract声明的类。
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
抽象类与接口的区别:
- 内容构造:相对于普通类多了抽象的方法,成员变量、普通方法、构造函数等,含有抽象方法一定是抽象类,而抽象类不一定含有抽象方法;而接口只能 含有常量和抽象方法。
- 构造函数:抽象类含有构造函数,但其不能实例化,其非抽象子类可以实例化;而接口是另外一种类型,不能含有构造函数,也不能实例化。
- 实现:子类通过extends关键字来继承抽象类,如果子类不是抽象类,它必须提供抽象类所有声明的方法的实现。而且抽象类只能单一被继承;其他类使 用implments关键字来实现接口,它必须要实现接口中所有声明的方法。接口是多实现的。
- 访问修饰符:抽象类只能abstract显示声明,抽象方法可以用public、protected和default来修饰;接口和接口方法只能是public来修饰,而成员变量只能用 public static final来修饰,即为静态常量。
什么时候使用抽象类和接口
1)想拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类。
2)实现多重继承,必须使用接口。
3)基本功能在不断改变,就需要使用抽象类。
posted on
浙公网安备 33010602011771号