AP新课来了

继承与多态怎么考?CSA 面向对象的三层理解

更新于 2026-08-15 · AP新课来了教研组

先说结论

  • ·继承与多态的考法集中在「读代码判断输出」:给父类子类各一个同名方法,用父类引用指向子类对象调用,问执行哪个——答案永远是「看对象的实际类型」。
  • ·三层理解:语法层(extends/super/重写的写法)→ 机制层(构造顺序、动态绑定)→ 设计层(FRQ 里正确写出子类)。
  • ·最高频陷阱:子类构造器隐式调用 super()、父类引用不能直接调用子类独有方法。

语法层:五个必须精确的写法

这一层全是记忆点,错一个就是丢分:

  • class Student extends Person:子类继承父类的公有方法与属性;
  • super(name, age):子类构造器调用父类构造器,必须是第一行;不写则隐式调用无参 super()——若父类没有无参构造器则编译错误(选择题考点);
  • 方法重写(override):子类方法与父类签名完全相同;重载(overload)是同名不同参数,两者概念区分是选择题常客;
  • super.method():子类重写方法内调用父类版本;
  • 子类不能直接访问父类的 private 属性,只能通过公有方法——FRQ 写子类时的高频错误。

机制层:动态绑定的判断口诀

考卷最爱的题型:Person p = new Student(); p.greet(); 输出父类版本还是子类版本?口诀是「编译看引用类型,运行看对象类型」——greet() 若被 Student 重写,执行的就是 Student 的版本。

配套的反向考点:p.study()(study 是 Student 独有方法)编译直接报错,因为引用类型 Person 里没有这个方法。两条合在一起:能不能调用看引用,调用哪个版本看对象。

设计层:FRQ 第 2 题的子类写法

FRQ 让你写子类时,评分点通常包括:extends 声明正确、构造器正确调用 super、按要求重写方法、必要时在重写中复用 super.method() 的结果。逐项都对应 rubric 上的分。

一个稳分的写作顺序:先写类声明和构造器(必拿分),再写重写方法的签名(拿分),最后填方法体逻辑——即使逻辑不完美,前面的结构分已经落袋。

Free Assessment

孩子适不适合,15 分钟测一测

不考编程知识——测逻辑、数学、英语读题、流程推演、细节专注五项底层能力, 做完当场出分维度报告。

免费测评

相关课程

AP CSA · Java 编程

从第一行 Java 代码到 FRQ 编程大题的 36 周完整路径,覆盖全部 53 个 AP Topics,浏览器里直接写、跑、测。

常见问题

接口(interface)和抽象类考吗?

现行官方框架已把接口、抽象类移出考试范围,只考具体类之间的继承。看到旧教材里的 implements 章节可以跳过(了解不吃亏,但不进考卷)。

Object 类的方法要掌握哪些?

掌握 equals 和 toString 被重写的意义即可:知道 println 一个对象时会调用它的 toString,知道 equals 默认比较引用、重写后比较内容。

多态学得云里雾里,有什么突破口?

回到「一张表」练习:左列写引用类型、中列写对象类型、右列写调用结果。追踪 15–20 道动态绑定题并逐行填表,机制自然内化——这和递归的便签法是同一个思路:把脑内过程外化。