【发布时间】:2021-09-21 23:25:07
【问题描述】:
这听起来像是一个重复的问题,但我真的很好奇编译器如何识别被覆盖的方法和覆盖的方法是否具有兼容的类型。正如我们所知,通常使用它们的签名来识别方法,并且签名仅包含方法名称及其参数,因此在重载时可以很容易地确定要选择哪个方法,因此,在重载时我们不能有两个完全相似的方法.但是对于覆盖,我们需要两个方法相同。那么编译器如何识别返回类型是否兼容呢?
编辑。我很清楚要执行的方法是根据程序运行时的引用来选择的,我只是好奇编译器的识别是如何工作的。
【问题讨论】:
-
“我只是对编译器的识别是如何工作的感到好奇。” - 一个好的 CS 专业将包括关于“编译器写作”的(可选)课程。这是一门期末/荣誉学年课程……许多学生跳过它,因为它以困难着称。还有一些关于这个主题的(大)教科书。无论如何......这些将包括关于类型和编译时类型检查的讲座/章节。
标签: java polymorphism overriding