抽象类:
- 抽象类是抽象方法和非抽象方法的集合,即抽象类可包含抽象方法和非抽象方法
- 抽象类不能被实例化
- 抽象类的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract
- 抽象方法不能为static
一个类必须声明为抽象类的情况:
- 当一个类的一个活多个方法是抽象方法时
- 当类的一个抽象类的子类,并且没有实现父类的所有的抽象方法,即只实现部分
- 当一个类实现一个接口,并且不能为全部抽象方法都提供实现时
接口:
- 接口可以实现多继承
- 接口可以使方法的定义和实现相分离,降低模块间或系统间的耦合性
接口与抽象类:
- 接口不能含有任何非抽象方法,而抽象类可以
- 类可以试想多个接口,但只能有一个父类
- 接口之间可以多继承
- 抽象类可以理解为抽象方法和非抽象方法的混合体,而接口中的方法完全是抽象方法,是一套纯粹的规范。一般来说,有关系的类才能继承同一个抽象类,而无关的类不可能有同一个抽象父类,单无关的类可以实现多个接口
类实现接口:
- 为了使用接口,要编写实现接口的类
- 如果一个累要实现一个接口,那么这个类就必须实现接口中所有抽象方法。否则这个类只能声明为抽象类
- 多个无关的类可以实现一个接口,一个类可以实现多个无关的接口,但是一个类只能继承一个类
- 一个累可以再集成一个父类的同事,实现一个或多个接口