抽象类
1.is a 关系。(是不是) 对事物的抽象。
抽象类=普通类+抽象方法
2.继承抽象类,实现多态。若没有子类继承它,则没有任何意义。一个子类只能继承一个抽象类。
子类要覆写抽象类中的全部抽象方法。
3.权限自己定义。抽象类可以有普通方法。但拥有抽象方法的类一定是抽象类。
4.抽象类不能new实例,但可以拥有构造方法,在子类中的构造方法中调用。
5.抽象方法使用abstract定义,不能与private共存。
接口
- has a 关系。(有没有) 对行为的抽象。
- 定义类实现接口implements。接口中的方法需要全部覆写。一个类可以实现多个接口。
- 接口中所有属性默认public static final;所有方法默认为public abstract;
- 抽象类实现接口,可以完全覆写接口中的方法,也可以覆写几个方法。
若有子类再继承抽象类,则子类需要继承剩余的抽象方法。
抽象类与接口分别在什么情况下使用?
1. 抽象类
有公共方法且实现功能一样时,使用抽象类。拥有一些默认方法,让一些子类实现。
若需要添加一些新的方法,直接在抽象类中添加,子类可以不进行变更。
2. 接口
只关心功能存在性,使用接口。
有些功能是某些子类有,而有一些子类没有,则只需要需要此功能的子类实现接口就可。
例:电子时钟
默认方法:显示时间。报时。
有些电子时钟还会有显示温度,湿度,报警等功能。
并不是所有的电子时钟都有这些功能,但所有的电子时钟都可以显示时间,报时。(抽象类)
则相应的电子时钟实现相应功能的接口就可。(接口)