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

抽象类

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

接口

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值