你有没有在写Java代码时,突然被一个“extends”搞懵过?别急,今天咱们不讲理论,就用真实场景+细腻语言,聊聊这个看似简单却藏着无数玄机的关键字——extends。
Q:extends到底是什么?
它就像你人生中的“榜样”——比如你是个程序员,看到大神写的代码特别优雅,你就想:“我要学他!” Java里也一样,你想复用别人写好的类功能,就用extends继承它。它让代码更干净、更易维护,是面向对象的精髓之一。
Q:举个真实的例子呗?
比如我之前做电商项目,有个基础类叫 Product(商品),有name、price属性和getPrice方法。后来要区分“实物商品”和“虚拟商品”,我就这样写:
public class Product { protected String name; protected double price; public double getPrice() { return price; }}public class PhysicalProduct extends Product { private String size; public void setSize(String size) { this.size = size; }}public class VirtualProduct extends Product { private String downloadLink; public void setDownloadLink(String link) { this.downloadLink = link; }}你看,两个子类都自动拥有父类的name和price,还各自加了专属属性。这不就是我们常说的“继承不重复造轮子”吗?
Q:那能不能多个类同时继承一个?
不行!Java是单继承语言,一个类只能有一个直接父类。但别慌,你可以用接口实现多继承效果。比如让PhysicalProduct和VirtualProduct都实现一个接口Deliverable,这样既能保持清晰结构,又能灵活扩展。
Q:继承会带来什么坑?
我踩过坑!有一次我把父类的private字段改成protected,结果子类报错说“访问权限不够”。后来才发现:protected只允许同包或子类访问,而private完全屏蔽。所以,设计继承关系时,字段权限要提前规划好,别等上线才改。
Q:为什么有人讨厌extends?
因为滥用它会让系统变得僵硬。比如你写了一个Animal类,然后所有动物都继承它,最后发现“企鹅”既不会飞又不是哺乳动物……这时候,组合(Composition)比继承更合适。记住:继承是“是一个”,组合是“有一个”。
总结一下:extends不是魔法,而是工具。用得好,让你的代码像搭乐高一样模块清晰;用不好,可能变成一团乱麻。下次写代码前,先问自己:“我真的需要继承吗?”
✨如果你也在用Java,欢迎留言你的继承故事,我们一起避坑成长~

