在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()。
方法重载通常发生在同一个类中,方法名相同,但参数列表不同,编译器根据调用时传入的参数选择合适的方法。方法重写通常发生在继承关系中,子类对父类已有方法提供新的实现,运行时可以根据对象实际类型表现出不同的行为。软考题不一定让你写代码,但会用“同名不同参”和“子类改父类方法”来考这组概念。
选项分析
正确。同名不同参数一般是重载;子类重新定义父类方法一般是重写。
错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。
错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。
错误。子类重写父类方法常常与运行时多态有关。
本题为什么容易错
这题最容易错在只盯“方法名相同”。重载和重写都可能同名,但它们关注点不同:重载解决的是同名方法如何按参数区分,重写解决的是子类对象如何表现出不同实现。
简短答案
方法重载和方法重写怎么区分,正确答案是 A(前者通常属于方法重载,后者通常属于方法重写)。方法重载通常发生在同一个类中,方法名相同,但参数列表不同,编译器根据调用时传入的参数选择合适的方法。方法重写通常发生在继承关系中,子类对父类已有方法提供新的实现,运行时可以根据对象实际类型表现出不同的行为。软考题不一定让你写代码,但会用“同名不同参”和“子类改父类方法”来考这组概念。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 前者通常属于方法重载,后者通常属于方法重写 | 本题正确答案 | 正确。同名不同参数一般是重载;子类重新定义父类方法一般是重写。 | 看到题干核心场景时优先联想到它 |
| 前者和后者都只能称为数据库范式分解 | 本题干扰项 | 错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 只要方法名称相同,就一定是方法重写 | 本题干扰项 | 错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 只要出现在子类中,就一定与多态无关 | 本题干扰项 | 错误。子类重写父类方法常常与运行时多态有关。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 前者和后者都只能称为数据库范式分解:错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。
- 只要方法名称相同,就一定是方法重写:错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。
- 只要出现在子类中,就一定与多态无关:错误。子类重写父类方法常常与运行时多态有关。
知识点详解
多态是软件设计师考试中需要结合场景理解的考点。围绕“方法重载和方法重写怎么区分”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()”,它指向的核心答案是 A(前者通常属于方法重载,后者通常属于方法重写)。
备考速记
备考速记:题干如果强调“多态”中的关键目标,就先联想到 多态;如果选项里出现 前者和后者都只能称为数据库范式分解、只要方法名称相同,就一定是方法重写、只要出现在子类中,就一定与多态无关,不要只看名称熟悉,要判断它们是否真正对应题干场景。
多态在多态场景中的作用
多态在本题中的核心价值,是解决“在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给出多态场景,判断应该选择哪个概念、工具、协议或管理过程。
- 考查多态的作用,要求从四个相近选项中找出最符合题干目标的一项。
- 把多态和前者和后者都只能称为数据库范式分解、只要方法名称相同,就一定是方法重写、只要出现在子类中,就一定与多态无关放在一起考,重点看适用场景是否一致。
- 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
多态在软件设计师软考中的考法
软考选择题通常不会只考概念定义,还会把多态放到多态场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
老师讲这类题时,会先让你找两个东西:第一,看有没有继承关系;第二,看参数列表有没有变化。同一个类里同名但参数不同,像一个窗口开了几种办理方式,这是重载。子类把父类原来的方法换成自己的实现,这才是重写。
考点定位
重载看参数列表,重写看继承关系和子类重新实现。题干如果强调同一个类、同名不同参数,优先想到重载;强调子类、父类方法、运行时多态,优先想到重写。
易错提醒
- 把同一个类中的同名不同参误判成重写。
- 只看方法名,不看参数列表和继承关系。
- 认为重写一定改变方法名,其实通常方法名和参数列表要保持一致或兼容。
备考提示
- 一句话记忆:重载看参数,重写看父子。
- 软件设计师复习面向对象时,可以把封装、继承、多态、重载、重写放在一张表里比较。
- 如果用书木兰软考题库 https://www.shumulan.com/ 练软设面向对象题,建议把“概念定义题”和“代码片段判断题”连着刷。
你可能还想了解
- 方法重载和方法重写怎么区分?
- 多态是什么?
- 多态在软件设计师考试中怎么考?
- 软件设计师多态题怎么理解?
- 方法重载和方法重写区别怎么考?
- 软件设计师面向对象怎么考?
本文小结
本题核心考点是多态在多态场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(前者通常属于方法重载,后者通常属于方法重写)。