使用关键字dynamic声明过程会发生什么?
使用关键字static声明它会产生什么影响?
答案 0 :(得分:8)
通过阅读documentation可以回答这个问题。
dynamic
关键字引入了一种可以多态覆盖的方法。在语义上它可以与virtual
互换,但是以不同的方式实现。在此处阅读:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Methods#Virtual_and_Dynamic_Methods
要使方法成为虚拟或动态方法,请包含虚拟或动态方法 声明中的指示。虚拟和动态方法,不像 静态方法,可以在后代类中重写。当一个 调用重写方法,类的实际(运行时)类型 或者在方法调用中使用的对象 - 而不是声明的类型 变量 - 确定要激活的实现。
要覆盖方法,请使用override指令重新声明它。一个 覆盖声明必须与订单中的祖先声明匹配 及其参数的类型和结果类型(如果有的话)。
...
在Delphi for Win32中,虚拟和动态方法是语义上的 当量。但是,它们在方法调用的实现方面有所不同 在运行时调度:虚拟方法优化速度,同时 动态方法优化代码大小。
通常,虚拟方法是最有效的实现方式 多态行为。动态方法在基类时很有用 声明了许多可以继承的可覆盖方法 应用程序中的后代类,但仅偶尔出现 重写的。
类静态方法就像类方法一样,它们是在类而不是实例上调用的。类static和class方法之间的区别在于类方法是传递包含类的Self
指针,而类静态方法则不是。这意味着类方法可以是多态的,而类静态方法则不能。在此处阅读:http://docwiki.embarcadero.com/RADStudio/Seattle/en/Methods#Class_Static_Methods
与类方法一样,可以在没有对象引用的情况下访问类静态方法。与普通的类方法不同,类静态方法根本没有Self参数。他们也无法访问任何实例成员。 (他们仍然可以访问类字段,类属性和类方法。)与类方法不同,类静态方法不能声明为虚拟。
在充分尊重的情况下,我建议您回答这个问题:How can I search for Delphi documentation?