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