当前位置: 代码迷 >> 综合 >> 抽象类,接口的区别与使用
  详细解决方案

抽象类,接口的区别与使用

热度:89   发布时间:2023-09-05 17:54:23.0

抽象类

1.is a 关系。(是不是) 对事物的抽象。
抽象类=普通类+抽象方法
2.继承抽象类,实现多态。若没有子类继承它,则没有任何意义。一个子类只能继承一个抽象类。
子类要覆写抽象类中的全部抽象方法。
3.权限自己定义。抽象类可以有普通方法。但拥有抽象方法的类一定是抽象类。
4.抽象类不能new实例,但可以拥有构造方法,在子类中的构造方法中调用。
5.抽象方法使用abstract定义,不能与private共存。

接口

  1. has a 关系。(有没有) 对行为的抽象。
  2. 定义类实现接口implements。接口中的方法需要全部覆写。一个类可以实现多个接口。
  3. 接口中所有属性默认public static final;所有方法默认为public abstract;
  4. 抽象类实现接口,可以完全覆写接口中的方法,也可以覆写几个方法。
    若有子类再继承抽象类,则子类需要继承剩余的抽象方法。

抽象类与接口分别在什么情况下使用?

1. 抽象类
有公共方法且实现功能一样时,使用抽象类。拥有一些默认方法,让一些子类实现。
若需要添加一些新的方法,直接在抽象类中添加,子类可以不进行变更。
2. 接口
只关心功能存在性,使用接口。
有些功能是某些子类有,而有一些子类没有,则只需要需要此功能的子类实现接口就可。

例:电子时钟
默认方法:显示时间。报时。
有些电子时钟还会有显示温度,湿度,报警等功能。
并不是所有的电子时钟都有这些功能,但所有的电子时钟都可以显示时间,报时。(抽象类)
则相应的电子时钟实现相应功能的接口就可。(接口)

  相关解决方案