You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript中重写Getter/Setter是否属于多态?

JavaScript中Getter重写与多态的关系

示例代码

Person类

class Person{
 constructor(name){
  this._name = name;
 }
 get name(){
  return this._name;
 }
}

Worker类

class Worker extends Person{
 constructor(name, job){
  super(name);
  this._job=job;
 }
 get job(){
  return this._job;
 }
 get name(){
  return "Worker: " + this._name;
 }
}

问题

在JavaScript中,重写类的Getter或Setter是否属于多态?Worker类重写name Getter的情况是否属于多态?

回答

首先明确:重写类的Getter/Setter属于多态的一种表现形式,Worker类重写name Getter的情况完全符合多态的定义。

多态的核心是:同一个属性或方法,在不同类型的实例上会表现出不同的行为。在JavaScript的继承体系里,Getter和Setter本质是特殊的访问器方法,子类重写父类的Getter后,同一个属性名(比如name)在父类实例和子类实例上的访问结果完全不同——Person实例的name返回原始名称,Worker实例的name返回带前缀的名称,这种“同一操作、不同行为”的特性,正是多态的典型体现。

不管是重写普通方法还是重写Getter/Setter,只要是基于继承实现的行为差异化,都属于多态的范畴。

内容的提问来源于stack exchange,提问作者Grimalkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:25:26