MST

星途 面试题库

面试题:TypeScript 类静态方法与继承中的特性

假设有一个基类 `Animal`,它有一个静态方法 `makeSound` 输出 'Generic animal sound'。现在定义一个子类 `Dog` 继承自 `Animal`,并重写 `makeSound` 方法输出 'Woof'。请解释当通过 `Dog.makeSound()` 调用时会发生什么,为什么?
25.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
  1. 调用结果: 当通过 Dog.makeSound() 调用时,会输出 'Woof'。
  2. 原因解释: 在面向对象编程中,静态方法属于类本身,而不属于类的实例。当子类 Dog 继承自基类 Animal 并重写了静态方法 makeSound 时,在调用 Dog.makeSound() 时,Python(假设是Python语言,不同语言实现原理类似但细节有别)会首先在 Dog 类中查找该静态方法。因为 Dog 类重写了 makeSound 方法,所以会调用 Dog 类中重写后的 makeSound 方法,从而输出 'Woof' 而不是基类 AnimalmakeSound 方法的 'Generic animal sound'。这体现了多态性在静态方法重写场景下的应用,子类重写的静态方法会覆盖基类的同名静态方法,使得基于子类调用该静态方法时执行子类特定的逻辑。