在编写Java代码时,我们经常会用到继承的概念。这个特性把代码的能力大大扩展,就像给代码长出了翅膀。用简单的话来讲,继承就是让子类站在父类的肩膀上。这意味着派生类能够直接获取基类中的public和protected成员,而不必重复造轮子。私有成员与构造器被隐藏起来,防止发生意外操作,保证了代码的安全性。 设想一下手机系统迭代:新版本继承旧版本,同时保留原有生态。这个过程就是代码复用的魔力。Java刻意限制只能有一个直接基类,这就像是一条线一样只有一个方向。这样做的好处显而易见:避免方法调用时出现歧义,简化设计并降低耦合度。当然也有坏处——在某些场景下需要借助组合或接口来变通,但这恰恰是Java鼓励面向接口编程的机会。 用extends关键字就可以轻松完成继承操作。只需要短短一行代码,子类就能获得父类的“血统证书”。一旦声明了继承关系就无法再继承第二个父类了。想要实现多继承吗?那就用接口吧。 即使没有调用构造器也能给基类字段赋值。比如在这个例子中:我们有一个Test类,创建了一个Apple对象后给它贴上“水果”标签,再给它自己的字段赋值为“苹果”。最后通过System.out.println输出结果。 在这个示例中:苹果属于水果中的一员。注意,这种方式只适用于没有参数的构造器场景。如果父类有参数就会报错。 当父类需要参数时,super就派上用场了。我们可以修改上述示例给Fruits类添加一个带参数的构造器来实现初始化操作。 运行结果仍然是一样的:苹果属于水果中的一员。记住顺序:先执行super再执行this,否则会先隐式调用父类无参构造器导致category为null。 总结一下Java继承三步走:首先声明extends关键字一次到位;其次是赋值操作,如果是无参构造器就直接给基类字段贴标签,如果是有参构造器就用super完成父子握手;最后通过子类实例透明访问父类和自身字段实现高效复用。只要把这三步刻进肌肉记忆,Java的继承就不会给你挖坑。