一句话核心答案:继承就是子类继承父类的属性和方法,实现代码复用功能扩展,Java 只支持单继承,核心关键字是extends,遵循is-a(是一种) 关系 。

1. 什么是继承?

继承是 Java面向对象三大特性之一,是代码复用的重要手段。当多个类存在相同属性和行为时,可将这些内容抽取到单独一个父类(超类 / 基类) 中,其他类只需通过extends关键字继承父类,就能直接拥有父类的非私有成员,无需重复定义。

核心作用

  • 提高代码复用性,减少冗余代码
  • 便于功能扩展,子类可重写父类方法
  • 建立类与类之间的关系,是多态的前提

2. 继承的实现语法

格式子类 extends 父类规则

  • Java 只支持单继承,一个子类只能有一个直接父类
  • 支持多层继承(父类还可以继承其他类)
  • 子类不能继承父类的private成员
  • 子类可以重写(Override)父类的非静态方法

示例代码

// 父类:抽取公共属性和方法
public class Person {
    // 公共属性
    String name;
    int age;

    // 公共方法
    public void eat() {
        System.out.println("人要吃饭");
    }

    public void sleep() {
        System.out.println("人要睡觉");
    }
}

// 子类1:学生类 继承 人类
public class Student extends Person {
    // 子类独有属性
    String studentId;

    // 子类独有方法
    public void study() {
        System.out.println(name + " 正在学习");
    }
}

// 子类2:老师类 继承 人类
public class Teacher extends Person {
    // 子类独有属性
    String course;

    // 子类独有方法
    public void teach() {
        System.out.println(name + " 正在授课");
    }
}

测试类

public class TestExtends {
    public static void main(String[] args) {
        // 创建学生对象
        Student stu = new Student();
        // 直接使用父类的属性和方法
        stu.name = "小明";
        stu.age = 18;
        stu.eat();
        stu.sleep();
        // 使用子类独有方法
        stu.study();

        System.out.println("============");

        // 创建老师对象
        Teacher teacher = new Teacher();
        teacher.name = "李老师";
        teacher.eat();
        teacher.teach();
    }
}

运行结果

人要吃饭
人要睡觉
小明 正在学习
============
人要吃饭
李老师 正在授课

关键点

  • 单继承:一个子类只能直接继承一个父类(Java 禁止多继承)
  • 代码复用:父类的通用代码,所有子类直接使用,无需重写
  • 子类扩展:子类可以新增自己独有的属性和方法
  • 成员访问:子类无法直接使用父类private成员,可通过get/set访问
  • Object 类:所有类默认直接或间接继承Object

3. 方法重写(Override)—— 继承的核心扩展

重写:子类对父类的方法进行重新实现,保留方法名、参数列表、返回值,修改方法体。

重写示例

// 父类
public class Animal {
    public void shout() {
        System.out.println("动物叫");
    }
}

// 子类:狗
public class Dog extends Animal {
    // 重写父类方法
    @Override
    public void shout() {
        System.out.println("汪汪汪");
    }
}

// 子类:猫
public class Cat extends Animal {
    // 重写父类方法
    @Override
    public void shout() {
        System.out.println("喵喵喵");
    }
}

4. 继承的核心特性总结表

特性 说明
核心关键字 extends
继承数量 单继承(一个子类只能有一个直接父类)
成员继承 可继承非private成员变量、方法
方法修改 重写 (Override) 父类非静态方法
层级关系 支持多层继承(A extends B,B extends C)
顶层父类 所有类默认继承Object

5. super 关键字(继承必备)

super代表父类引用,用于访问父类的属性、方法、构造方法。

常用场景

  • 调用父类构造方法:super()
  • 调用父类成员变量:super.变量名
  • 调用父类被重写的方法:super.方法名()

示例

public class Student extends Person {
    @Override
    public void eat() {
        super.eat(); // 调用父类的eat方法
        System.out.println("学生吃饭要快");
    }
}

6. 总结

特点 继承
核心思想 is-a(是一种)关系,代码复用
关键字 extends
数量限制 单继承,不能多继承
核心功能 复用父类代码 + 子类扩展功能
适用场景 多个类有相同属性 / 方法时

✅ 什么时候使用继承

  • 多个类存在共同属性、共同方法,可以抽取父类
  • 类与类之间满足 is-a 关系(学生 is a 人、狗 is a 动物)
  • 需要复用代码扩展功能
  • 多态提供前提

❌ 什么时候不使用继承

  • 类之间没有逻辑包含关系,强行继承会导致结构混乱
  • 仅为了复用方法,但无层级关系(优先用工具类 / 组合)

🌟最终结论继承 = extends + 代码复用 + 方法重写,是 Java 面向对象的核心特性,单继承是 Java 的重要规则,掌握继承是学习多态、框架源码的基础 🚀

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐