gpt4 book ai didi

oop - 如何强制仅调用父类(super class)的方法,尽管它们已被重写(在 Ocaml 中)

转载 作者:行者123 更新时间:2023-12-03 04:39:06 27 4
gpt4 key购买 nike

说实话,我对 OCaml 的对象系统了解不多。以下代码片段说明了我的问题:

class foo =
object (o)

method foo1 y =
print_endline "foo1";
o#foo2 (y - 1)

method foo2 y =
print_endline "foo2";
if y > 0 then o#foo2 y else print_endline "end"
end

class bar =
object (o : 'self_type)
inherit foo as super

method foo2 y =
print_endline "bar2";
if y > 0 then super#foo1 y else print_endline "endbar"

end

let _ = (new bar)#foo2 3

执行时,该代码片段会产生以下输出:

bar2
foo1
bar2
foo1
bar2
endbar

,显示父类(super class)方法 foo1(通过 super#foo1 调用)执行子类中的重写方法 foo2。相反,我希望它从父类(super class)调用方法 foo2,因为它是通过 super 调用的。

是否可以实现这种行为,即让父类(super class)方法仅调用其他父类(super class)方法,即使它们在子类中被重写?

最佳答案

不,不是。这就是“后期绑定(bind)”,这是 OO 的基本思想,并非 OCaml 特有的。

我不知道你想做什么,但面向对象编程可能不是正确的工具,或者至少不是这样使用的。如果您想学习 OCaml,您可能应该专注于非 OO 部分,这对于开始来说已经足够有趣了。

关于oop - 如何强制仅调用父类(super class)的方法,尽管它们已被重写(在 Ocaml 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com