继承与多态怎么考?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 道动态绑定题并逐行填表,机制自然内化——这和递归的便签法是同一个思路:把脑内过程外化。