【发布时间】:2019-03-18 01:15:17
【问题描述】:
我一直在阅读一些帖子,但总是让我感到困惑。
1,有人说一种语言是静态/动态的,取决于type 在运行时或编译时的确定方式。但是我们应该说语言是static/dynamic typing language 而不是static/dynamic language?
2,在 swift 与 Objective-c 的一些比较中。我们知道,objective-c 使用它的运行时来进行动态方法分派。还有人以此为由说language/objective-c is dynamic,这是真的吗?!
3,我有时对 OOP 的多态性感到困惑,有人说为了使其工作,该语言必须支持方法动态调度。是这样吗?
4,对于 swift,我知道它是一种静态类型语言,但它是静态还是动态方法调度语言?它是静态语言还是动态语言??
【问题讨论】:
-
即使是静态类型的语言也有动态调度。明显的例子:Swift、ObjC。如果您有
let car: Car = SportsCar(),并且您调用car.vroom(),则运行时必须动态调度该方法调用,以确定正确的方法实现是什么。该类型仍然是静态已知的:它是Car,或者它的某个子类型。 -
@Alexander 我想这是对我的问题 #3 的部分回答。根据您的描述,听起来如果该语言支持 OOP 的多态性,这意味着该语言能够
method dynamic dispatch。但总是这样吗?
标签: objective-c swift oop