在写 Java 代码时,一旦类与类之间出现“是一个”的关系——比如“学生是一个人”“经理是员工”——你就绕不开继承。这门课讲的就是继承这条主线上的所有关键点:访问控制、super、覆盖、构造器规则、抽象类、多态、向下转型,以及 Object 类里那几个你迟早要重写的方法。它解决的不是“语法背不背得下来”的问题,而是“当继承关系复杂起来,代码逻辑为什么跑不对”的问题。

这门课解决什么工作场景

最典型的场景是:你接手一个项目,父类里定义了一个方法,子类也写了一个同名方法,结果运行时调用的是哪一个?为什么有时候编译报错,有时候运行报错?再比如,你在写一个通用的方法,参数是父类类型,但实际传入的是子类对象,能不能调用子类特有的方法?这些不是面试题,是日常开发里每天都会碰到的坑。这门课把继承相关的规则一条条拆开讲,包括构造函数的执行顺序、覆盖和重载的区别、抽象类什么时候该用、多态到底是怎么在 JVM 里被解析的,以及向下转型前为什么要用 instanceof 做判断。学完这些,你再看别人写的继承体系,心里会清楚很多。

适合什么基础,先看哪几块

适合已经写过一些 Java 类、知道 public/private 是什么、能手动创建对象、调用过普通方法的人。如果连 `class` 和 `new` 都还没写过,建议先补基础语法再来。内容上建议按这个顺序看:先看前四块——访问控制、super、隐藏、覆盖,这是继承的骨架;然后直接跳到“继承当中的构造函数规则”那几节,因为构造器调用顺序是初学者最容易晕的地方;接着看“何为抽象方法和抽象类”,理解为什么有的方法只能被重写、不能被实例化;再往后是多态和向下转型,这部分是理解 Java 面向对象设计的关键;最后再看 Object 类那一串方法,尤其是 equals、hashCode、toString,这些是你在写业务对象时几乎每次都要重写的。至于 finalize,了解即可,现在生产环境基本不靠它做资源清理。

学完能独立做什么,资料怎么配合练习

学完这套内容,你能独立完成几件事:设计一个多层的继承体系,明确哪些字段和方法该放在父类、哪些该放在子类;正确写出子类的构造器,知道 super 必须放在第一行;用覆盖重写父类的方法,并且知道在重写时怎么调用父类的原方法;用抽象类定义好模板,让子类去实现具体逻辑;在方法参数里使用父类类型接收子类对象,再用 instanceof 判断后安全地向下转型;最后,你还能写出符合规范的 equals 和 hashCode,避免把对象放进 HashSet 后出现“查不到”的 bug。

资料怎么用,建议不要只看视频。每看完一个主题,就自己写一个对应的小 demo。比如看完构造器规则,写一个三层继承,打印每层构造器执行顺序;看完多态,写一个动物类,子类是猫和狗,用父类引用调用各自重写的叫声;看完 hashCode,写一个只重写 equals 没重写 hashCode 的类,放进 HashSet 里观察问题。每个视频都不长,但知识点很密,直接看容易滑过去。动手写一遍,再回来看视频里例子,你会发现很多细节才真正落下来。这套资料适合用来系统补齐继承这一块的盲区,不适合作为零基础的入门第一课。

课程目录

课程目录36 集
  • 1 继承的访问控制(1) (04:18).mp4
  • 2 继承的访问控制(2) (11:07).mp4
  • 3 超关键字 (06:48).mp4
  • 4 隐藏 (06:01).mp4
  • 5 覆盖(Override) (06:56).mp4
  • 6 覆盖(Override)2 (01:34).mp4
  • 7 Override,Overload,Overwrite的区别 (08:30).mp4
  • 8 继承当中的构造函数规则 (12:37).mp4
  • 9 继承当中的构造函数规则2 (09:22).mp4
  • 10 继承当中的构造函数规则3 (05:41).mp4
  • 11 何为抽象方法和抽象类1 (12:18).mp4
  • 12 何为抽象方法和抽象类2 (02:56).mp4
  • 13 何为抽象方法和抽象类3 (01:06).mp4
  • 14 何为抽象方法和抽象类4 (01:55).mp4
  • 15 何为抽象方法和抽象类5 (06:44).mp4
  • 16 何为抽象方法和抽象类6 (08:09).mp4
  • 17 多态Polymorphism1 (03:29).mp4
  • 18 多态Polymorphism2 (22:48).mp4
  • 19 多态Polymorphism3 (03:41).mp4
  • 20 多态Polymorphism4 (04:32).mp4
  • 21 多态Polymorphism5 (02:06).mp4
  • 22 向下转型Downcasting 1 (12:13).mp4
  • 23 向下转型Downcasting 2 (01:03).mp4
  • 24 instanceof关键字 (11:16).mp4
  • 25 Object类的equals和toString的用法 (22:43).mp4
  • 26 Object类的hashCode的用法1 (12:16).mp4
  • 27 Object类的hashCode的用法2 (14:57).mp4
  • 28 Object类的hashCode的用法3 (08:02).mp4
  • 29 Object类的hashCode的用法4 (10:40).mp4
  • 30 Object类的getClass的用法 (08:02).mp4
  • 31 Object类的finalize的用法1 (12:31).mp4
  • 32 Object类的finalize的用法2 (04:46).mp4
  • 33 java的垃圾回收与内存泄露的关系1 (13:00).mp4
  • 34 java的垃圾回收与内存泄露的关系2 (04:38).mp4
  • 35 数据封装类 (05:06).mp4
  • 36 类的继承 (02:18).mp4