面试题答案
一键面试以下以Python语言为例:
class Animal:
def __init__(self, name):
self.name = name
def makeSound(self):
print("Generic animal sound")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
def makeSound(self):
print("Woof!")
类的初始化顺序
- 创建
Dog
实例时:- 首先调用
Dog
类的__init__
方法。 - 在
Dog
类的__init__
方法中,通过super().__init__(name)
调用父类Animal
的__init__
方法,先初始化父类部分的属性(name
)。 - 然后再初始化
Dog
类自己新增的属性(breed
)。
- 首先调用
- 总结:在继承关系中,先初始化父类,再初始化子类自身新增的属性。
内存管理要点
- 对象创建:当创建
Dog
对象时,内存中会为整个对象分配空间,包括从父类继承的属性(name
)和子类自身的属性(breed
)。 - 内存释放:当对象不再被引用时(例如超出作用域或显式删除),Python的垃圾回收机制会自动回收其占用的内存。在这个过程中,父类和子类部分的内存会一起被回收,无需开发者手动管理内存释放。但要注意,如果对象中包含一些需要显式关闭或清理的资源(如文件句柄、数据库连接等),则需要在类中实现相应的清理方法(如
__del__
方法,不过一般建议使用上下文管理器with
来处理资源)。