面试题答案
一键面试- 方法查找规则基础:
- 在Ruby中,方法查找遵循从对象所属类开始,沿着继承链向上查找的规则。
- 具体到本题的查找路径:
-
当创建类C的实例并调用
print_info
方法时:- 首先,Ruby会在类C中查找
print_info
方法。因为类C是实例所属的类,这是查找的起始点。 - 如果类C中定义了
print_info
方法,Ruby就会调用这个方法,查找结束。 - 如果类C中没有找到
print_info
方法,Ruby会沿着继承链向上,到类B中查找。因为类C继承自类B。 - 如果类B中定义了
print_info
方法,Ruby就会调用这个方法,查找结束。 - 如果类B中也没有找到
print_info
方法,Ruby会继续沿着继承链向上,到类A中查找。因为类B继承自类A。 - 如果类A中定义了
print_info
方法,Ruby就会调用这个方法。 - 如果在类A中也没有找到
print_info
方法,Ruby会抛出NoMethodError
异常,表示找不到该方法。
- 首先,Ruby会在类C中查找
-
所以,方法查找路径是:类C -> 类B -> 类A。
-