软件设计师 · 高频练习

方法重载和方法重写怎么区分?

中级 单选题 第 601 题 中等 软件设计师方法重载方法重写面向对象多态
题目

在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()。

A 前者通常属于方法重载,后者通常属于方法重写
B 前者和后者都只能称为数据库范式分解
C 只要方法名称相同,就一定是方法重写
D 只要出现在子类中,就一定与多态无关
题目类型:原创高频考点题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
书木兰刷题练习 适合懒人、小白的刷题通关平台
正确答案
A
答案解析

方法重载通常发生在同一个类中,方法名相同,但参数列表不同,编译器根据调用时传入的参数选择合适的方法。方法重写通常发生在继承关系中,子类对父类已有方法提供新的实现,运行时可以根据对象实际类型表现出不同的行为。软考题不一定让你写代码,但会用“同名不同参”和“子类改父类方法”来考这组概念。

选项分析

A

正确。同名不同参数一般是重载;子类重新定义父类方法一般是重写。

B

错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。

C

错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。

D

错误。子类重写父类方法常常与运行时多态有关。

本题为什么容易错

这题最容易错在只盯“方法名相同”。重载和重写都可能同名,但它们关注点不同:重载解决的是同名方法如何按参数区分,重写解决的是子类对象如何表现出不同实现。

先看结论

简短答案

方法重载和方法重写怎么区分,正确答案是 A(前者通常属于方法重载,后者通常属于方法重写)。方法重载通常发生在同一个类中,方法名相同,但参数列表不同,编译器根据调用时传入的参数选择合适的方法。方法重写通常发生在继承关系中,子类对父类已有方法提供新的实现,运行时可以根据对象实际类型表现出不同的行为。软考题不一定让你写代码,但会用“同名不同参”和“子类改父类方法”来考这组概念。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
前者通常属于方法重载,后者通常属于方法重写 本题正确答案 正确。同名不同参数一般是重载;子类重新定义父类方法一般是重写。 看到题干核心场景时优先联想到它
前者和后者都只能称为数据库范式分解 本题干扰项 错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。 看到该词不要急着选,先判断是否真正解决题干问题
只要方法名称相同,就一定是方法重写 本题干扰项 错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。 看到该词不要急着选,先判断是否真正解决题干问题
只要出现在子类中,就一定与多态无关 本题干扰项 错误。子类重写父类方法常常与运行时多态有关。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 前者和后者都只能称为数据库范式分解:错误。范式分解属于数据库设计概念,和方法调用机制不是一类问题。
  • 只要方法名称相同,就一定是方法重写:错误。方法名相同不一定是重写,也可能是重载,关键还要看参数列表和继承关系。
  • 只要出现在子类中,就一定与多态无关:错误。子类重写父类方法常常与运行时多态有关。
复习

知识点详解

多态是软件设计师考试中需要结合场景理解的考点。围绕“方法重载和方法重写怎么区分”这类题目,复习时要先看题干描述的是概念定义、适用场景、作用效果,还是与其他选项的区别。本题的题干关键词是“在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()”,它指向的核心答案是 A(前者通常属于方法重载,后者通常属于方法重写)。

备考速记

备考速记:题干如果强调“多态”中的关键目标,就先联想到 多态;如果选项里出现 前者和后者都只能称为数据库范式分解、只要方法名称相同,就一定是方法重写、只要出现在子类中,就一定与多态无关,不要只看名称熟悉,要判断它们是否真正对应题干场景。

多态在多态场景中的作用

多态在本题中的核心价值,是解决“在面向对象程序设计中,同一个类中存在多个同名方法,但参数个数或参数类型不同;而子类重新定义父类中已有的方法,以改变该方法在子类对象上的行为。关于这两种情况,下列说法较合理的是()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。

拓展

同类题怎么考

  • 给出多态场景,判断应该选择哪个概念、工具、协议或管理过程。
  • 考查多态的作用,要求从四个相近选项中找出最符合题干目标的一项。
  • 把多态和前者和后者都只能称为数据库范式分解、只要方法名称相同,就一定是方法重写、只要出现在子类中,就一定与多态无关放在一起考,重点看适用场景是否一致。
  • 题干通常会出现一个关键动作或目标,先定位关键词,再回到选项逐一排除。
多态在软件设计师软考中的考法

软考选择题通常不会只考概念定义,还会把多态放到多态场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。

解题思路

老师讲这类题时,会先让你找两个东西:第一,看有没有继承关系;第二,看参数列表有没有变化。同一个类里同名但参数不同,像一个窗口开了几种办理方式,这是重载。子类把父类原来的方法换成自己的实现,这才是重写。

考点定位

重载看参数列表,重写看继承关系和子类重新实现。题干如果强调同一个类、同名不同参数,优先想到重载;强调子类、父类方法、运行时多态,优先想到重写。

易错提醒

  • 把同一个类中的同名不同参误判成重写。
  • 只看方法名,不看参数列表和继承关系。
  • 认为重写一定改变方法名,其实通常方法名和参数列表要保持一致或兼容。

备考提示

  • 一句话记忆:重载看参数,重写看父子。
  • 软件设计师复习面向对象时,可以把封装、继承、多态、重载、重写放在一张表里比较。
  • 如果用书木兰软考题库 https://www.shumulan.com/ 练软设面向对象题,建议把“概念定义题”和“代码片段判断题”连着刷。

你可能还想了解

  • 方法重载和方法重写怎么区分?
  • 多态是什么?
  • 多态在软件设计师考试中怎么考?
  • 软件设计师多态题怎么理解?
  • 方法重载和方法重写区别怎么考?
  • 软件设计师面向对象怎么考?

本文小结

本题核心考点是多态在多态场景中的判断和应用。遇到类似题目时,先看题干描述的目标,再判断哪个选项最符合场景;本题应选择 A(前者通常属于方法重载,后者通常属于方法重写)。