在 Java 中,extends 和 implements 关键字有什么区别?

1. 使用上的区别

extends

  • 用于类继承。
  • 一个类可以继承另一个类,从而获得父类的属性和方法。
  • Java 只支持单继承,即一个类只能继承一个父类。

简单理解为,你只有一个爸爸,只能继承你的亲爸爸的基因。

implements

  • 用于实现接口。
  • 一个类可以实现一个或多个接口。
  • 实现接口的类必须实现接口中所有的抽象方法,除非它是一个抽象类。

简单理解为,你可以有很多个社会角色。比如一个人,白天在办公室是一个勤奋的社畜青年,实现了Employee接口,但到了晚上回家后,变成了一个沉迷于电视剧和零食的失意青年,实现了CouchPotato接口。在这种情况下,该人需要具备办公室摸鱼(Fishing方法)和刷视频(BrushVideos 方法)的能力,这些能力是通过实现 EmployeeCouchPotato这两个接口来展示的。

2. 功能上的区别

继承(extends

  • 继承是面向对象编程中的一个基本特性,允许一个类继承另一个类的属性和方法。
  • 继承主要用于代码的重用和扩展现有类的功能。
  • 子类继承父类所有的非私有成员(属性和方法)。

举个例子:

  • 老式手机(父类):拥有打电话和发短信的功能。
  • 新款手机(子类):继承了老式手机的功能(打电话和发短信),并扩展了新的功能(拍照)

实现(implements

  • 接口定义了一组方法规范,但不提供这些方法的实现。
  • 一个类实现一个接口,就必须提供接口中所有方法的具体实现。
  • 接口支持多实现,即一个类可以实现多个接口。

举个例子:

你决定学习不同类型的艺术,比如画画和弹钢琴。

  • 艺术家(你的类):能够实现不同的艺术形式。
  • 画家(接口):定义了画画的方法。
  • 钢琴家(接口):定义了弹钢琴的方法。

这时候,你想怎么画怎么画,想怎么弹怎么弹,自己定义。

3. 抽象性的区别

类(extends

  • 类可能是具体的或抽象的。
  • 抽象类可以包含抽象方法(没有实现的方法)和具体方法。
  • 子类通过继承可以扩展或修改父类的行为。

接口(implements

  • 接口通常是完全抽象的(Java 8 之前),只定义方法签名,不包含实现。
  • Java 8 引入了默认方法和静态方法,允许接口中包含具体实现。
  • 接口更多地用于定义类型的行为而非其状态。

4. 设计目的的区别

  • extends 主要用于表达类之间的“是一个(is-a)”关系,例如 Cat 是一个 Animal
  • implements 用于表示类与接口之间的“能做什么(can-do)”关系,例如 Car 可以 Drive
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值