为什么阿里巴巴建议开发者谨慎使用继承?

简介: 对于很多开发者来说,继承肯定都是不陌生的。但是,继承一定适合所有的场景吗?毫无忌讳的使用继承来做代码扩展真的好吗?

作者 | Hollis

从学习Java的第一天起,我们就知道Java是一种面向对象语言,而学习Java的第二天,我们就知道了面向对象的三大基本特性是:封装、继承、多态。

所以,对于很多开发者来说,继承肯定都是不陌生的。但是,继承一定适合所有的场景吗?毫无忌讳的使用继承来做代码扩展真的好吗?

为什么《阿里巴巴Java开发手册》中有一条规定:谨慎使用继承的方式进行扩展,优先使用组合的方式实现。

image.png

本文就来针对这些问题,简单分析一下。

面向对象的复用技术

每个人在刚刚学习继承的时候都会或多或少的有这样一个印象:继承可以帮助我实现类的复用。所以,很多开发人员在需要复用一些代码的时候会很自然的使用类的继承的方式,因为书上就是这么写的(老师就是这么教的)。但是,其实这样做是不对的。长期大量的使用继承会给代码带来很高的维护成本。

前面提到复用,这里就简单介绍一下面向对象的复用技术。

复用性是面向对象技术带来的很棒的潜在好处之一。如果运用的好的话可以帮助我们节省很多开发时间,提升开发效率。但是,如果被滥用那么就可能产生很多难以维护的代码。

作为一门面向对象开发的语言,代码复用是Java引人注意的功能之一。Java代码的复用有继承,组合以及代理三种具体的表现形式。

来源 | HollisChuang's Blog

相关文章
|
SQL 缓存 Oracle
为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)
本文介绍了COUNT函数的用法,主要用于统计表行数。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)。
12902 0
为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)
|
前端开发 网络协议 Dubbo
超详细Netty入门,看这篇就够了!
本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。
96963 33
超详细Netty入门,看这篇就够了!
|
5月前
|
人工智能 数据库 知识图谱
医疗垂直领域生成式搜索优化(GEO):基于 RAG 与知识图谱的召回增强架构实战
本文提出医疗垂直领域生成式搜索优化(GEO)新范式,融合Schema结构化标记、知识图谱映射与RAG召回增强技术,显著提升非公医疗机构信息的有效召回率与语义一致性。实测显示mAP提升225%,事实一致性达98.5%。(239字)
478 5
|
6月前
|
人工智能 运维 API
阿里云OpenClaw汉化版零门槛部署指南:全中文界面+代码命令详解
在AI自动化办公全面普及的2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借自然语言指令操控、多任务自动化执行、多平台适配的核心优势,成为个人与中小企业搭建专属AI助手的首选开源轻量级工具。它不仅能完成文档生成、文件解析、服务器运维等基础工作,更可通过阿里云一键部署实现7×24小时稳定运行。尤其适配的汉化版,以全中文界面彻底解决了原版英文操作门槛高的痛点,搭配零配置适配设计,让零基础用户也能快速上手,真正实现“零技术门槛解锁中文AI办公”。
5806 7
|
缓存 自然语言处理 物联网
|
缓存 安全 Java
Java中线程池,你真的会用吗?
本文我们就来围绕这个问题来分析一下为什么JDK自身提供的构建线程池的方式并不建议使用?到底应该如何创建一个线程池呢?
10398 123
Java中线程池,你真的会用吗?
|
SQL Java 程序员
全新出击!《Java开发手册(嵩山版)》解读手册升级下载
《〈Java开发手册(嵩山版)〉灵魂15问》重磅来袭!“一线大厂如何用Java”解读再升级,千万阅读量博主深究Java规约背后的原理。规范学好Java还不来看一看?
75602 0
全新出击!《Java开发手册(嵩山版)》解读手册升级下载
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
6749 0
|
域名解析 安全 Android开发
阿里云企业邮箱怎么样?有没有免费版的?如何申请?
阿里云企业邮箱怎么样?有没有免费版的?如何申请?阿里云企业邮箱有着20年运营经验,用户认可度还是很高的,阿里云企业邮箱有收费版也有免费版,免费版配置50邮箱帐号、5GB邮箱空间和2GB个人网盘,免费时长最长可选5年,小编来详细说下阿里云企业邮箱免费版申请页面、企业邮箱配置及申请攻略。
5214 0
阿里云企业邮箱怎么样?有没有免费版的?如何申请?