网络宝典
第二套高阶模板 · 更大气的阅读体验

类继承是什么?用手机和遥控器打个比方就懂了

发布时间:2026-04-23 13:30:26 阅读:2 次

你有没有发现,家里的智能电视遥控器和空调遥控器长得差不多?按键布局似,有些功能还一模一样——比如都有「开关」和「音量+/-」。其实编程里的「类继承」,就跟这俩遥控器的关系差不多。

类就是“模板”,继承就是“抄作业但加点自己的东西”

在面向对象编程里,「类(Class)」就像一个产品设计图。比如先画了个「遥控器」的模板:

class RemoteControl {
constructor(brand) {
this.brand = brand;
}
powerOn() {
console.log("开机啦!");
}
volumeUp() {
console.log("音量+1");
}
}

这个模板能造出各种遥控器,但光有开关和音量不够用。电视遥控器还得调频道,空调遥控器得调温度。这时候,不用从头再画一张图,而是让新类「继承」老类:

class TVRemote extends RemoteControl {
changeChannel(channel) {
console.log("切换到频道 " + channel);
}
}

注意关键词 extends——它就是「继承」的信号灯。TVRemote 自动拥有了 powerOn()volumeUp() 这两个方法,还能额外加自己的功能 changeChannel()

为什么非得用继承?省事、少错、好维护

想象一下,如果每个遥控器都自己写一遍「开机」逻辑,哪天厂商要改开机提示音,就得翻遍所有文件挨个改。而用了继承,只改 RemoteControl 里的 powerOn(),所有子类立刻同步更新。

再比如,你写了个「用户」类,有姓名、邮箱、登录方法;后来要做「管理员」,除了这些基础信息,还要有「删帖子」「封账号」权限。直接让 Admin 继承 User,基础字段和方法全都有了,只补上管理专属操作就行。

小提醒:继承不是万能胶

不是所有“像”的东西都适合继承。比如「鸟会飞,飞机也会飞」,但飞机不该继承鸟——它们本质不同,只是功能巧合相似。继承强调的是「是一种」关系:电视遥控器「是一种」遥控器,管理员「是一种」用户。如果只是「能做某事」,更适合用接口或组合。

简单说,类继承就是让代码“复用不重复”,像搭乐高:底层积木搭好了,上层只管往上拼新零件,不用重造轮子。