extends是什么意思-extends 意为扩展
实际上"extends"在软件工程里,翻译过来就是“继承”,说白了就是拿一个老大哥撑着新弟弟。 咱们那会儿讲"Constructor"要么"Public"的时候,学生脑子里可能是个冷冰冰的代码结构,认定那是标准的类构造法。但到了实习期,发现大量项目里,开发者就是喜爱偷懒,直接复制粘贴老版的 Pattern。
这时候"extends"就跳出来了,它能把那个老大哥的优点直接抄过来,然后你再用新名字要么略微改改参数,接着跑。
比如我在给一个 Spring Boot 项目做重构,之前有个模块用的是 Angular 的写法,后来老板嫌忒重,让他直接转 Vue,结局就是那文件长得跟 Angular 一模一样,加载速度还蹭蹭快,我都质疑是不是复制了。
这时候要是直接用"extends",就能实现“先借出老大哥的骨架,再把自己的血肉塞进去”的效果,这操作在开发圈子里叫"DRY"原则(Don't Repeat Yourself),就是别自己造轮子。 这就好比你去学画画,老师不会让你从零启动画一个苹果,而是直接给你借来一个苹果模型,你只需求把手伸那会儿,把画布换一下颜色,把笔换成水彩笔,剩下的局部,包含苹果那圆圆的形状、黄黄的皮、红红的笑脸,老师都会顺手给你留好,你只需求动手填色和构图。"extends"就是那个“老师留好苹果模型”的局部,而你自己写的代码就是那“填色构图”的局部。你要是敢从苹果模型里抽走那套核心的渲染逻辑,自己从头造一个,那你的代码质量肯定不中,不仅长得丑,性能也差。
故此大量后端开发在写 Controller 要么 Service 层时,看到个接口用的好,直接"extends"上去,然后再管自己的逻辑,这样既能保证接口风格统一,又能灵活处理业务细节。 那你可能会问,到底是啥时候该用,啥时候该用个别的?这就得看我们要搭啥房子了。
要是是那种从 Angular 转 Vue,要么从 React 转 Vue,要么从 UWP 连到 Electron 这种跨平台的大工程,"extends"就是务必的,出于这时候老大哥的底层框架简直没变,直接继承能省掉一层层的样板代码,开发者能省出大把的脑力去进食、写故事。但要是你在写一个全新的电商后台,要么想从零启动造一个游戏引擎,这时候"extends"反而成了累赘,出于老大哥可能根本不存有,也没法拿来抄。
这时候就得老老实实从头写,别看辛苦点,但专担风险,能避免那些“老大哥”做错了,害得整个房子塌了的事故。 在职业考试里,要么在写代码的时候,"extends"这个词往往让人印象深刻,出于它自带一种“官方推荐”、“标准做法”、“高级手法”的标签感。
有时候面试官问一个复杂的结构,你突然跳出来个"extends",可能会让考生认定你懂行。但反过来想,要是一个开发者连"extends"都不懂,反而认定那是低级、那是作弊、那是偷懒的代名词,那他就确实没成长。出于"extends"代表的是对现有生态的尊重,是对前人成果的复用。它不是让你去发明新东西,而是让你去利用旧东西的长处。 要是你是在预备 Java/Spring 的面试,老师可能会让你写个 Controller,说它需求继承某个 Service 的逻辑,但又不想写一堆重复的查询代码。
这时候你就得想:我能不能直接"extends"?自然能,出于这两个类挺可能长得像。但要是你非要写一个彻底独立的、没有任何继承关系的类,那也是顶级的写法,出于它证明白你的代码是写给未来用的,而不是写给眼前人看的。对于大量刚入行的开发人员,他们忒好办陷入“我要手写一点”、“我要亲手实现”的迷思,总认定“手写”才有感觉,实际上大量时候“继承”才是手感最好的时候。一旦习惯了"extends",你会发现,你的代码结构变得挺稳固,变化起来也挺灵活,不用每次都重新造轮子。 在应用构建的实战里,我也见过不少开发者抱着"extends"这个词,当作它会带来啥特殊的魔法。
实际上没那么回事,它就是个一般/平平的继承指令。但在这个指令下面,往往藏着大量隐形的工作:你需求处理好接口定义,你需求确保父类的生命周期被对管理,你需求时刻警惕抽象基类带来的深层性难题。
这时候"extends"就像是一个脚手架,它帮你搭好了基础的地基,让你在上面再盖楼,这样楼盖得稳,不好办晃。大量项目出于不懂这点,结局就是改了样式的接口,连个父类的实体都没改,直接害得了整个系统的逻辑错乱,这种时候用"extends"就能避免 90% 以上的低级毛病。 自然,也不是所有地方都用得通。
比如在做单元测试的时候,要是父类忒复杂,要么父类的验证逻辑自己都要写一遍,这时候强行"extends"可能会让你的测试用例写得乱七八糟,反而增添了维护成本。
这时候就得权衡一下:是省事直接"extends",还是自己花点工夫把父类的验证逻辑也理顺,反正都是“继承”这个动作,目标都是为了代码质量。真正的高手,是在“偷懒”和“负责”之间找平衡,既能用"extends"实现快速迭代,又能通过合理的重构让代码保持高内聚。 最终想说,"extends"这个概念,实际上贯穿了从理论到实践的一直,它不只是是一个语法指令,更是一种思维模式。它教会我们不要把所有事件都从零启动,要学会借力,要学会利用现有的出色代码库,要学会在继承中创新,而不是在重复中造路。当你真正理解了"extends"背后的意义,你会发现,甭管是写代码还是找工作,那些看似枯燥的规则,实际上都是通往更高阶本事的钥匙。
不用死记硬背,不用层层递进,只要你习惯用这些现成的积木,你的代码就会自动长得越来越漂亮,越来越专业。
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
