尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Java面向对象期末复习:封装继承多态考点与程序阅读题拆解

发布时间:2026/9/29 18:00:03

资讯中心
01
ARTICLE

Java面向对象期末复习:封装继承多态考点与程序阅读题拆解

Java面向对象期末复习:封装继承多态考点与程序阅读题拆解
期末Java面向对象复习最坑的不是知识点多而是知识点之间纠缠不清。你单独问封装、继承、多态是什么大家都能说几句但一落到选择判断题里各种细节陷阱直接把人整懵。这篇复习详解就是把面向对象整棵知识树给你捋清楚类与对象的底层关系、三大特性的考点分布、抽象类和接口的语法边界、static和final的常见坑位、程序阅读题的拆题套路最后再给一套考前冲刺路线。考前一晚看完比翻三遍书都有用。1. 类和对象的本质关系别再把概念题做错1.1 类与对象把这个比喻焊死在脑子里期末卷子里第一个爱出概念题的地方就是类和对象的关系。很多同学背了几遍定义换一种说法就懵。我用了很多年的一个比喻类就是图纸对象就是用图纸盖出来的房子。图纸能住人吗不能房子才能住人。但在Java里你天天通过new创建出来的那个东西本质上就是按照图纸类生产出来的具体实例对象。所以类是对一类事物的抽象描述对象是这个抽象描述的具体化实例。概念题最常见的出法是这样一个班级有50个学生每个学生有学号、姓名、成绩请问这里类和对象分别指什么答案是学生是类那50个具体的、各自独立的学生实例是对象。注意不是“班级”是类很多人一看到班级两个字就条件反射选班级这是题目里最常见的误导手法。还有一个绑定概念类是一种数据类型。Java里除了int、double这些基本数据类型我们自定义的类其实也是一种数据类型只是它属于引用数据类型。这句话经常出现在判断题里记住结论类本质上是引用数据类型对象是类的实例。1.2 new关键字背后发生了什么期末考试的程序阅读题最爱用一段简单代码考你内存里发生了什么。我给你拆开讲清楚。假设代码是这样Student stu new Student();这一行代码在内存里干了三件事第一在栈内存中声明一个引用变量stu这个变量此刻还是空的值为null。第二在堆内存中为Student对象分配空间调用构造方法完成初始化把对象的成员变量赋予默认值或指定值。第三把堆内存中对象的首地址赋值给stu这个引用变量。从此以后stu就是通往那个对象的一把钥匙。很多同学记不住“引用变量在栈、对象在堆”这个结论我教一个联想方法栈的特点是空间小、存取快适合放轻量级的引用和基本类型变量堆的特点是空间大、生命周期灵活适合放真正的对象数据。就像停车场的查询器栈上的引用很轻巧但你要找的车也就是堆里的对象才是真正占地方的大家伙。这个知识点不光期末考Java面试也考。理解了它对后面学数组、学集合、理解垃圾回收机制都有帮助因为那些东西全都建立在“引用指向堆对象”这个模型上。2. 三大特性期末最核心的大题来源2.1 封装不只是加上private就完事封装的定义好背把对象的属性和行为结合成一个独立的整体并尽可能隐藏对象的内部实现细节。但期末真正考你的是怎么落实封装以及为什么要这么干。落实封装的标配动作是成员变量用private修饰然后对外提供public的getter和setter方法。这里有个很多新手容易犯的错觉得setter方法就是把值赋进去就结束了。实际上setter方法的价值在于“检查”两个字。举个典型例子假设类里面有个age属性正常人年龄不可能是负数也不可能超过150。如果放任外部代码直接修改age坏数据就灌进来了。但在setter里加上校验逻辑非法数据直接被拦在外面。public void setAge(int age) { if (age 0 || age 150) { System.out.println(非法年龄数据); return; } this.age age; }这类知识点在期末大题里经常以“请完善某个类的封装”形式出现判分点一般有三个属性是否private、是否有完整的getter和setter、setter中是否有必要的逻辑判断。很多人能拿前两分第三分丢得最冤。访问修饰符的访问权限范围是选择题高频考点建议把下面这张表背下来修饰符同类同包子类不同包全局private可以不可以不可以不可以默认不加修饰符可以可以不可以不可以protected可以可以可以不可以public可以可以可以可以提醒一下这张表的第四列“子类不同包”是最容易记混的地方。默认权限是包内可见包外的子类访问不了只有protected级别的权限才开放给包外子类。考试选择题经常给代码让你判断某个字段能否被访问直接把这张表背熟选择题拿分最稳。2.2 继承super和构造执行顺序是重灾区继承的知识点很多但期末最爱考的就是三块super的使用、重写的规则、构造方法的执行顺序。先说super。super在子类里有三种用法super.属性访问父类中被隐藏的成员变量。super.方法调用父类中被重写的实例方法。super()调用父类的构造方法且必须写在子类构造方法的第一行。第三种用法有个强制规则如果子类构造方法里没有显式写super(...)编译器会自动补一个super()调用父类的无参构造。所以很多程序阅读题里你会发现new子类对象的时候父类的无参构造方法先被执行了然后才执行子类自己的构造方法体。这就是经典的“先父后子”构造顺序考试几乎必考。给你一个实用的记忆锚点装修房子要先打地基再刷墙。地基是父类刷墙是子类顺序不能反。再说重写。重写Override的规则可以用六个字总结同声明、宽访问。同声明方法名、参数列表必须完全相同。宽访问子类重写方法的访问权限不能比父类更严格。父类方法是public子类重写就不能是private这是很多选择题的经典陷阱。还有一条隐藏规则重写不能抛出比父类更大的受检异常。这条通常放在异常章节考但如果你记住了在程序阅读题里也能帮你快速判断一段代码是否合法。2.3 多态重载与重写要分清但差别巨大多态在Java里分两种编译时多态和运行时多态。编译时多态就是方法重载Overload运行时多态就是方法重写Override结合向上转型。方法重载的规则一句话能说完同一个类中方法名相同、参数列表不同。这里的参数列表不同包括个数不同、类型不同、顺序不同。注意返回值不同不算重载这是每年都有不少人栽的坑。有的同学不服气说两个方法就返回值不一样其他都一样怎么就不能共存实际上编译器根本没法区分调用的是哪个方法因为调用方法的时候你不一定把返回值接住。比如单独写一行method()编译器就不知道你调的是哪个method了。所以这设计不是Java偷懒是为了避免二义性。运行时多态的精髓是“父类型引用指向子类对象”。看这段经典代码Animal a new Dog(); a.speak();编译时a的静态类型是Animal编译器只允许你调用Animal类里声明过的方法运行时实际调用的是Dog类重写后的speak()方法。这就是“编译看左边运行看右边”口号的由来。期末试卷的程序阅读题里经常挖一个坑父类引用调用了子类新增的方法。比如Dog类里有一个bite()方法但Animal类里没有如果直接用a.bite()这段代码直接编译错误。原因就是刚才说的编译期编译器只认Animal类型里有什么方法。想调用子类特有的方法必须先做向下转型。说到转型顺便把instanceof讲掉。判断一个引用变量是否属于某个类或者它的子类类型用instanceofif (a instanceof Dog) { Dog d (Dog) a; d.bite(); }向下转型之前必须先做instanceof判断否则可能抛出ClassCastException。这个原则在期末程序阅读题和编程题里都是高频操作。2.4 构造方法的细节坑位整理构造方法是期末选择题集中出题的地方。我把学生容易踩的坑全部列一遍。第一构造方法的名字必须和类名完全一致包括大小写不能有返回类型连void都不能写。很多人以为void不算返回类型写上void也“能运行”实际上写了void之后它就不再是构造方法了而是变成了一个普通方法。代码编译不报错但语义完全不同new对象时根本不会调用它。第二每个类默认有一个无参构造方法。但是一旦你手写了任何一个带参构造方法默认的无参构造就消失了。如果你再想new一个无参对象就必须自己手写一个无参构造。这个要点每年必考尤其结合继承出现时更阴险父类只有带参构造子类构造方法里如果不显式调用super(带参)编译器会尝试调用super()然后发现父类没有无参构造编译直接报错。第三构造方法可以重载也可以在一个构造方法里调用另一个构造方法写法是this(参数)且必须放在第一行。同时要注意this()和super()不能同时出现因为它们都要求自己必须是第一行。第四静态代码块、构造代码块、构造方法的执行顺序这是经典阅读题。记住结论静态代码块在类加载时执行且只执行一次静态代码块先于构造代码块构造代码块先于构造方法。如果有继承关系完整顺序是父类静态代码块然后子类静态代码块接着父类构造代码块再父类构造方法然后子类构造代码块最后子类构造方法。这个顺序表期末前建议默写三遍因为考频实在太高了。3. 抽象类、接口与关键字的判断题陷阱3.1 抽象类与接口怎么选期末大题的标准答法抽象类和接口是期末大题的常客。两者都是不能直接new的类型但考点和答案大不相同。抽象类用abstract class定义可以包含抽象方法也就是没有方法体的方法也可以包含普通方法、成员变量、构造方法甚至静态方法。接口用interface定义从JDK8开始可以有default方法和静态方法JDK9之后还能有私有方法但接口里不能有实例字段只能有常量。这个常量其实自带public static final修饰即使你不写编译器也会自动补。一个记忆技巧抽象类是“is-a”关系接口是“has-a”能力。打个比方狗是动物所以Dog extends Animal飞机有飞行的能力所以Plane implements Flyable。期末大题问“为什么用接口而不用抽象类”时最标准的答案是Java类是单继承的一个类最多只能继承一个抽象类但一个类可以实现多个接口。接口弥补了Java单继承的不足解耦能力更强。还有两个高频判断考点抽象类能不能没有抽象方法能。只要类被abstract修饰哪怕里面全是普通方法也不能实例化。接口能不能有实现方法从JDK8开始能但必须是default方法或静态方法。这些全是选择题喜欢抠的细节。3.2 static和final的关键字高危陷阱static修饰的成员属于类不属于某个对象。这个基本概念不难难的是它的衍生结论。static方法里能不能用this和super不行。因为this和super代表对象层面的引用而static方法在类加载时就已经存在可以脱离对象直接通过类名调用自然不能访问跟具体对象绑定的东西。static方法能不能访问实例成员变量不行。因为实例成员变量必须有对象才存在而static方法不依赖对象存在。反过来实例方法能不能访问静态成员能。这个单向关系经常出现在判断题里。static代码块前面讲过了类加载时执行一次多个静态代码块按书写顺序执行。再说final。final修饰的变量基本类型不能改变值引用类型不能改变地址。注意这个“引用类型不能改变地址”不代表对象内部的数据不能变。举例final ArrayListString list new ArrayList(); list.add(hello);这段操作是合法的。因为final锁死的是list这个引用指向哪个对象而不是对象内部能不能变。期末考试有判断题专门在这里设坑很多人以为final了就不能往集合里加数据那是对final的误解。3.3 值传递与引用传递必考题里的必考题Java里到底是值传递还是引用传递期末必考Java面试也必考标准答案是Java只有值传递。对基本类型传的是值本身方法内修改不影响外部变量。对引用类型传的是引用的拷贝也就是地址的值。这句话很多人背下来但不理解拆开讲。方法的参数本质上是把实参“复制一份”给形参。基本类型复制的是里面的数据所以你在方法里改形参改的是副本原数据纹丝不动。引用类型复制的是栈上的地址值也就是说形参和实参指向同一个堆对象。这时候如果在方法里通过形参修改对象的属性外部对象的属性确实会被改因为两边手里拿的是同一个对象的地址。但是如果在方法里给形参重新赋值比如p new Person()外部实参还是指向原来的对象不会受任何影响。期末程序阅读题经常考这段描述public static void change(Person p) { p new Person(); p.name 张三; }问执行后外部的Person对象name是什么。答案是不变还是原来的值。因为方法内部的p new Person()只是让形参改指了别处对外部毫无影响。这个坑十个学生里有六个会掉进去。4. 期末高频真题与易错题逐题拆解4.1 选择题高频考点清单期末选择题其实是有题库逻辑的。知识点就那么多翻来覆去考。把最常见的出题点整理成清单你对着自查类与对象的关系辨析。访问修饰符的访问范围。重载与重写的判断。构造方法与普通方法的区别。值传递与引用传递的结果判断。抽象类与接口的语法特性。static和final的组合含义。类加载与构造的执行顺序。instanceof语法的正确书写。this和super的用法及限制。这十类如果都能说清楚选择题基本能拿满分。不建议考前盲目刷大量偏题怪题把这十类考点回到课本对应章节逐个啃透效率远高于题海战术。4.2 程序阅读题的通用拆题套路程序阅读题是期末拉开差距的重头戏。很多同学看到代码就从第一行读到最后一行的输出然后凭感觉写答案。这种答法太被动。我的建议是养成固定的四步读题流程第一步先找main方法把程序执行入口定住。 第二步遇到new操作就在草稿纸上画一个对象框写清楚这个对象里成员变量的状态。 第三步变量赋值、方法调用都在草稿上追踪尤其是引用类型的赋值要搞清楚多个引用是否指向同一个对象。 第四步遇到重写方法调用时判断编译期类型是什么运行期实际类型是什么。有一个实用技巧代码里如果出现父类引用指向子类对象那么调用方法时先在子类里找有没有重写。找到就调子类的找不到就往上找父类的。如果再找不到那就要检查是不是编译错误了。4.3 编程题的标准答题结构与常见扣分点期末编程题一般就两类一类是按需求定义类和对象另一类是给定场景补全某个类的封装或继承关系。这类题想拿高分结构比功能更重要。我见过太多学生代码功能是对的但类设计一塌糊涂属性全部publicsetter里没有校验逻辑方法命名随意。结果就是老师想给分都找不到给分点。给你一个标准模板。题目要求设计一个学生类Student包含学号、姓名、成绩属性并提供相关方法。高分作答应该是属性部分全部使用private修饰。 构造方法提供一个无参构造和一个带参构造。 getter和setter每个属性都配齐。 setter中建议包含必要的校验逻辑这是加分项。 重写toString方法用于输出对象信息。 按题意补充需要的行为方法。注意一个判分细节还有参构造时建议调用setter完成赋值而不是直接this.name name。为什么因为setter里有校验逻辑直接赋值会绕开校验。这个面向对象的设计思想在编程题评分标准里尤其看重。我见过有老师专门在试卷上标注“必须通过setter赋值”目的就是考察你理不理解封装的意义。5. 一周冲刺复习路线与实操建议5.1 三轮复习法从知识到题感如果考试还剩一周建议按三轮来安排时间。第一轮第1-2天过知识点框架。不用细抠每一个代码示例重点是把你课本目录里的面向对象章节标题变成自己的知识树每个章节能说出一句话概括。说不上来的地方立刻翻书或者看这篇博文对应的章节。第二轮第3-4天刷题与程序阅读并列推进。把课本习题、老师发的复习题里所有面向对象的选择题、填空题、程序阅读题做一遍。做完对答案后错题要回到对应知识点再理解一遍而不是只背答案。第三轮第5-6天全真模拟与编程题专项。找一套往年真题掐时间完成。重点训练程序阅读题的草稿画图能力和编程题的完整代码书写。考前一天不再做新题只看错题和记忆表格。5.2 动手实践把抽象概念变成本能只看书永远学不会面向对象。动手敲代码是对概念最好的检验。封装那部分自己写一个Employee类把所有成员变量设为private加上getter和setter并在setter里写上校验规则。写好之后你才能体会“改一处处处受益”的含义。多态那部分写一个Shape父类定义draw()方法然后写Circle、Rect、Triangle三个子类重写draw()。再写一个drawShape(Shape s)方法分别传入不同的子类对象看看输出有什么不同。实测几次之后多态这个概念就再也不用死记硬背了。写代码时肯定会有各种报错。这个阶段别怕每修一个错你对Java的理解就更深一层。期末复习阶段写代码的重点不在代码量而在于你能不能亲眼看到程序的执行过程。建议打开IDEA的Debug模式在new语句后面加断点亲眼看一下对象在内存里的分配过程亲眼看一下引用变量指向哪里。这个视觉化体验比看再多文字解释都有用。5.3 考前最后一天的核心清单考前24小时不建议再翻大段教程。重点过这几样东西访问修饰符权限表默写一遍。重写与重载的对照表。构造方法与代码块的执行顺序表。运行时多态的判断口诀编译看左边运行看右边。类设计的标准写法包括封装类、继承子类、接口实现类。值传递的结论总结。还可以把这篇博文里的所有表格重新默写一遍。能默写出来的才是真掌握了默写不出来的地方考前还有时间翻回来补。我自己当年复习时就有这个习惯把每章考点浓缩成一张A4纸临考前只看这几张纸。信息越多越焦虑少而精的东西反而在考场上最提分。我个人在带复习过程中最深的感受是Java面向对象这块拉开分数差距的从来不是谁更聪明而是谁把基本概念之间的连接想得更清楚。你花一晚上弄明白值传递和引用传递的真实关系往往比刷五十道选择题还有用。这篇博文把所有值得考前重点过一遍的内容都串了一遍剩下的就看你动手了。期末稳过冲。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。