一、什么是继承?

继承(Inheritance)是面向对象编程的重要特性之一,允许一个类(子类)继承另一个类(父类或超类)的属性和方法,从而实现代码重用和功能扩展。


二、继承的基本语法

class 父类 {
    // 父类属性和方法
}

class 子类 extends 父类 {
    // 子类新增属性和方法
}

例如:

class Animal {
    void eat() {
        System.out.println("动物吃东西");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("狗叫");
    }
}

三、继承的特点

  • 子类继承父类的所有非私有(非private)成员(属性和方法)。
  • 子类可以新增自己的成员,也可以重写(Override)父类的方法。
  • Java 是单继承,一个类只能继承一个直接父类,但可以通过接口实现多继承的效果。
  • 子类对象可以赋值给父类类型(多态)。

四、关键字说明

关键字说明
extends声明继承关系,子类继承父类
super访问父类的属性、方法或构造器
@Override标注方法是重写父类的方法

五、继承示例代码

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void introduce() {
        System.out.println("我是 " + name + ", 年龄 " + age);
    }
}

class Student extends Person {
    String school;

    public Student(String name, int age, String school) {
        super(name, age);  // 调用父类构造器
        this.school = school;
    }

    @Override
    void introduce() {
        super.introduce();  // 调用父类方法
        System.out.println("我在 " + school + " 上学");
    }
}

public class Test {
    public static void main(String[] args) {
        Student s = new Student("小明", 18, "清华大学");
        s.introduce();
    }
}

输出:

我是 小明, 年龄 18
我在 清华大学 上学

六、继承的注意事项

  1. 构造方法不被继承,但子类构造方法中可以使用 super() 调用父类构造方法。
  2. private 成员不能被继承,但可通过公有方法访问。
  3. final 类 不能被继承;final 方法 不能被重写。
  4. 继承层次不宜过深,避免过度复杂。
  5. 多态依赖继承,但二者不是同一概念。

七、继承带来的好处

  • 代码复用:公共代码写在父类,子类继承后无需重复编写。
  • 结构清晰:体现“是一个”的关系,有利于代码设计和维护。
  • 多态实现基础:通过继承和重写实现运行时多态。

如果你需要,我可以帮你写:

  • Java 继承中的多态详解
  • 抽象类和接口的继承区别
  • Java 继承常见陷阱及最佳实践

随时告诉我!