面试题答案
一键面试以下是Python代码实现:
class Animal:
speciesCount = 0
@staticmethod
def getSpeciesCount():
return Animal.speciesCount
class Dog(Animal):
def __init__(self):
Animal.speciesCount += 1
# 测试代码
dog1 = Dog()
dog2 = Dog()
print(Animal.getSpeciesCount())
静态属性和方法在继承体系中的行为特点:
- 静态属性:
- 共享性:静态属性在类的所有实例之间是共享的,并且在继承体系中,所有子类也共享基类的静态属性。例如,上述代码中
Animal.speciesCount
无论是在Animal
类还是Dog
类中,都是同一个属性,Dog
类实例化时对Animal.speciesCount
的修改会影响整个继承体系。 - 访问方式:可以通过类名直接访问,如
Animal.speciesCount
,也可以通过实例访问,但不推荐通过实例访问,因为容易造成误解。
- 共享性:静态属性在类的所有实例之间是共享的,并且在继承体系中,所有子类也共享基类的静态属性。例如,上述代码中
- 静态方法:
- 无实例绑定:静态方法不依赖于类的实例,它们与类本身相关联。在继承体系中,子类可以继承并调用基类的静态方法,如
Animal.getSpeciesCount()
在Dog
类继承体系下同样可用。 - 调用方式:可以通过类名直接调用,如
Animal.getSpeciesCount()
,虽然也可以通过实例调用,但同样不推荐,因为它与实例无关。
- 无实例绑定:静态方法不依赖于类的实例,它们与类本身相关联。在继承体系中,子类可以继承并调用基类的静态方法,如