
🏠个人主页:黎雁
🎬作者简介:C/C++/JAVA后端开发学习者
❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、游戏、规划、程序人生
✨ 从来绝巘须孤往,万里同尘即玉京

文章目录
- Java继承入门:概念+特点+核心继承规则
-
- [📝 文章摘要](#📝 文章摘要)
- [一、为什么需要继承?🤔 从实际开发痛点说起](#一、为什么需要继承?🤔 从实际开发痛点说起)
- [二、继承是什么?基础定义与语法 📖](#二、继承是什么?基础定义与语法 📖)
-
- [2.1 继承的官方定义](#2.1 继承的官方定义)
- [2.2 继承的核心术语](#2.2 继承的核心术语)
- [2.3 继承的基础语法](#2.3 继承的基础语法)
- [2.4 实战案例:用继承重构动物类体系](#2.4 实战案例:用继承重构动物类体系)
- [三、继承的3大核心好处 🎁](#三、继承的3大核心好处 🎁)
- 四、Java继承的3大核心规则(必记)✅
- [五、继承的基础注意事项 ⚠️](#五、继承的基础注意事项 ⚠️)
-
- 注意1:子类只能继承父类的**非私有**成员
- 注意2:子类不能继承父类的**构造方法**
- [注意3:继承的使用场景------**is a** 关系](#注意3:继承的使用场景——is a 关系)
- [✍️ 写在最后](#✍️ 写在最后)

Java继承入门:概念+特点+核心继承规则
✨ 知识回顾
前五篇我们把static关键字的核心知识点吃透了------从静态变量的基础特性、内存原理,到静态方法的用法、工具类实战,再到静态与非静态的访问规则和避坑指南,掌握了类级别操作的核心逻辑。接下来我们进入Java面向对象的三大核心特性之一------继承,这是实现代码复用、构建类体系的关键,本篇从继承的基础概念、核心特点入手,讲透Java继承的核心规则,打好继承的入门基础🚀!
📝 文章摘要
- 核心摘要:本文从继承的实际开发需求出发,讲解继承的定义、语法格式和核心好处,重点分析Java继承的3大核心规则(单继承、多层继承、所有类继承Object),结合动物类体系的实战案例拆解继承的使用逻辑,帮你理解继承是如何实现代码复用和类体系构建的。
- 阅读时长:9分钟
- 适合人群&阅读重点
🎯 Java初学者:重点理解继承的定义、好处,掌握继承的基础语法和核心规则,能实现简单的类继承。
📚 高校计算机专业学生:理清继承的设计初衷,理解面向对象中"代码复用"的底层实现逻辑。
💻 初级开发工程师:掌握用继承构建业务类体系的思路,减少代码冗余。
📖 面试备考者:熟记Java继承的核心规则(单继承等),为后续方法重写、父子类关系打基础。
一、为什么需要继承?🤔 从实际开发痛点说起
在没有继承之前,我们定义多个相似的类时,会出现大量代码冗余------相同的属性和方法需要在每个类中重复定义,维护成本极高。
开发痛点示例:定义猫、狗类的冗余问题
java
// 猫类
public class Cat {
// 公共属性:姓名、年龄
String name;
int age;
// 猫类独有方法
public void catchMouse() {
System.out.println(name + "在抓老鼠");
}
// 公共方法:吃饭、睡觉
public void eat() {
System.out.println(name + "在吃饭");
}
public void sleep() {
System.out.println(name + "在睡觉");
}
}
// 狗类
public class Dog {
// 重复定义公共属性:姓名、年龄
String name;
int age;
// 狗类独有方法
public void watchDoor() {
System.out.println(name + "在看门");
}
// 重复定义公共方法:吃饭、睡觉
public void eat() {
System.out.println(name + "在吃饭");
}
public void sleep() {
System.out.println(name + "在睡觉");
}
}
可以看到,猫和狗都有name、age属性和eat()、sleep()方法,这些代码被重复写了两遍。如果再定义兔子、老虎类,还要继续重复,修改时需要改所有类,极易出错。
继承的解决方案
提取多个类的公共属性和方法 ,定义为父类(超类/基类) ,然后让这些类作为子类(派生类) 继承父类,子类自动拥有父类的所有非私有成员,只需定义自己的独有属性和方法即可,彻底解决代码冗余问题。
二、继承是什么?基础定义与语法 📖
2.1 继承的官方定义
继承 是Java面向对象的三大核心特性(封装、继承、多态)之一,指子类通过extends关键字继承父类的非私有成员(属性、方法),子类无需重复定义,直接拥有并使用这些成员,同时可扩展自己的独有功能。
简单来说:继承 = 共性抽取 + 个性扩展 ,是实现代码复用的核心手段。
2.2 继承的核心术语
- 父类/超类/基类 :抽取共性的类,如上面案例中的
Animal(动物类); - 子类/派生类 :继承父类的类,如
Cat、Dog; - 继承关系:子类是父类的具体实现,父类是子类的抽象概括(如猫是动物的一种);
- 单继承:一个子类只能继承一个父类(Java的核心规则);
- 多层继承:子类继承父类,父类再继承另一个父类,形成继承链。
2.3 继承的基础语法
java
// 父类定义:普通类,无需特殊修饰
public class 父类名 {
// 公共属性和方法
}
// 子类定义:通过extends关键字继承父类
public class 子类名 extends 父类名 {
// 子类独有属性和方法(无需重复写父类的内容)
}
💡 关键说明:Java中只有类能使用继承 ,接口的继承用implements(后续讲解),且子类只能继承一个父类。
2.4 实战案例:用继承重构动物类体系
提取Cat、Dog的共性为Animal父类,子类继承后仅定义独有功能,解决代码冗余问题。
步骤1:定义父类------Animal(动物类)
封装所有动物的公共属性和方法:
java
/**
* 父类:动物类(抽取猫、狗的共性)
*/
public class Animal {
// 公共属性
String name;
int age;
// 公共方法
public void eat() {
System.out.println(name + "在吃饭");
}
public void sleep() {
System.out.println(name + "在睡觉");
}
}
步骤2:定义子类------Cat(猫类)
继承Animal,仅定义独有方法catchMouse():
java
/**
* 子类:猫类 → 继承Animal父类
*/
public class Cat extends Animal {
// 子类独有方法:抓老鼠
public void catchMouse() {
System.out.println(name + "在抓老鼠");
}
}
步骤3:定义子类------Dog(狗类)
继承Animal,仅定义独有方法watchDoor():
java
/**
* 子类:狗类 → 继承Animal父类
*/
public class Dog extends Animal {
// 子类独有方法:看门
public void watchDoor() {
System.out.println(name + "在看门");
}
}
步骤4:测试类------验证继承效果
子类对象可直接使用父类的属性和方法,也可调用自身独有方法:
java
/**
* 测试类:验证继承的使用
*/
public class TestAnimal {
public static void main(String[] args) {
// 1. 创建猫对象,使用父类+子类成员
Cat cat = new Cat();
cat.name = "加菲猫";
cat.age = 3;
cat.eat(); // 调用父类方法:加菲猫在吃饭
cat.sleep(); // 调用父类方法:加菲猫在睡觉
cat.catchMouse(); // 调用子类独有方法:加菲猫在抓老鼠
System.out.println("========");
// 2. 创建狗对象,使用父类+子类成员
Dog dog = new Dog();
dog.name = "哈士奇";
dog.age = 2;
dog.eat(); // 调用父类方法:哈士奇在吃饭
dog.sleep(); // 调用父类方法:哈士奇在睡觉
dog.watchDoor(); // 调用子类独有方法:哈士奇在看门
}
}
运行结果
加菲猫在吃饭
加菲猫在睡觉
加菲猫在抓老鼠
========
哈士奇在吃饭
哈士奇在睡觉
哈士奇在看门
重构亮点 ✨
- 代码复用 :父类的
name、age和eat()、sleep()仅定义一次,所有子类直接使用; - 易于维护 :若要修改"吃饭"的逻辑,只需改父类
Animal的eat()方法,所有子类同步生效; - 层次清晰:父类抽象共性,子类实现个性,类体系结构一目了然。
三、继承的3大核心好处 🎁
从上面的实战案例中,我们能直观感受到继承的价值,总结为3大核心好处,也是面向对象中设计继承的初衷:
好处1:提高代码复用性
将多个类的公共代码抽取到父类中,子类通过继承直接拥有,无需重复定义,大幅减少代码量。
好处2:提高代码可维护性
公共代码集中在父类,修改时只需改一处,所有子类自动继承修改后的逻辑,避免了"改一处需改多处"的问题。
好处3:构建类的层次体系
通过继承可以构建从抽象到具体 的类体系,比如Animal→Mammal(哺乳动物)→Cat(猫),让类的关系更符合现实世界的逻辑,便于理解和扩展。
四、Java继承的3大核心规则(必记)✅
Java对继承做了严格的规则限制,这是高频考点和开发规范,必须牢记,避免语法报错和设计错误!
规则1:Java只支持单继承,一个子类只能有一个直接父类
❌ 错误示例:一个子类继承多个父类(编译报错)
java
// 报错:Multiple inheritance is not allowed in Java
public class Cat extends Animal, Pet {
}
✅ 原因:Java为了简化程序设计,避免多继承的菱形问题 (多个父类有同名方法,子类无法确定调用哪个),因此规定单继承。
💡 补充:若需要实现"多继承"的效果,Java提供了接口(后续讲解)来替代,这是面向对象的设计技巧。
规则2:Java支持多层继承,形成继承链(子类→父类→祖父类)
子类继承父类,父类可以继续继承另一个父类,子类会拥有所有上层父类的非私有成员,示例:
java
// 祖父类:动物类
public class Animal {
public void eat() {}
}
// 父类:哺乳动物类 → 继承Animal
public class Mammal extends Animal {
public void run() {}
}
// 子类:猫类 → 继承Mammal
public class Cat extends Mammal {
public void catchMouse() {}
}
此时Cat类不仅拥有Mammal的run(),还拥有Animal的eat(),实现了多层的代码复用。
💡 注意:多层继承的链不要过长(建议不超过3层),否则会导致类的关系过于复杂,难以维护。
规则3:Java中所有类都直接或间接继承Object类
Object类是Java提供的根父类,位于java.lang包下,无需手动导入:
- 若一个类没有显式使用
extends继承任何类,默认继承Object类 (如Animal类默认extends Object); - 若一个类有显式父类,通过多层继承,最终也会继承Object类。
💡 核心价值:Object类提供了Java中最基础的通用方法 (如toString()、equals()、hashCode()),所有类都能直接使用这些方法,后续会专门讲解Object类的核心方法。
继承规则总结表
| 规则类型 | 核心内容 | 语法要求 | 设计建议 |
|---|---|---|---|
| 单继承 | 一个子类仅一个直接父类 | 禁止多继承,编译报错 | 如需多实现,用接口替代 |
| 多层继承 | 支持继承链,子类拥有所有上层成员 | 语法允许,无报错 | 继承链不超过3层,简化关系 |
| 根父类Object | 所有类直接/间接继承Object | 无需手动extends,默认继承 | 熟练掌握Object的通用方法 |
五、继承的基础注意事项 ⚠️
注意1:子类只能继承父类的非私有成员
父类中被private修饰的属性和方法,子类无法继承(封装性的体现),示例:
java
public class Animal {
private String name; // 私有属性
public void eat() {} // 公共方法
}
public class Cat extends Animal {
public void test() {
// 报错:无法访问父类私有属性name
System.out.println(name);
// 正常访问:公共方法eat()
eat();
}
}
💡 解决方案:若子类需要访问父类的私有成员,父类可提供getter/setter公共方法(封装的标准做法)。
注意2:子类不能继承父类的构造方法
构造方法是类的特殊方法,属于当前类 ,不能被子类继承,但子类的构造方法会默认调用父类的无参构造方法(后续进阶篇详细讲解)。
注意3:继承的使用场景------is a 关系
只有当两个类之间满足**"子类是父类的一种"** 时,才适合使用继承,这是面向对象的设计原则:
- ✅ 正确场景:
Cat is a Animal(猫是一种动物)、Dog is a Mammal(狗是一种哺乳动物); - ❌ 错误场景:
Student extends Book(学生不是一种书),强行继承会导致类的关系混乱。
✍️ 写在最后
- 继承的核心是共性抽取、个性扩展,解决了代码冗余问题,是Java面向对象实现代码复用的核心手段;
- 必须牢记Java继承的3大规则:单继承、多层继承、所有类继承Object,这是语法基础,也是面试高频考点;
- 继承的使用原则:只有满足is a 关系的类才适合继承,且多层继承的链不要过长,保证类体系的清晰性;
- 核心细节:子类只能继承父类的非私有成员,私有成员可通过getter/setter方法访问,构造方法不能被继承。
下一篇我们将深入继承的细节------讲解子类继承父类成员的底层逻辑,分析构造方法、成员变量、成员方法的继承规则,以及虚方法表在继承中的作用,让你从"会用继承"到"理解继承底层"💪!
❤️ 我是黎雁,专注Java基础与实战分享,关注我,一起从0到1吃透Java面向对象!
📚 后续文章预告:《Java继承细节:子类继承父类成员的底层逻辑》
💬 评论区交流:你在使用继承时遇到过哪些语法报错?或者对单继承/多层继承有哪些疑惑,欢迎留言讨论~