绑定时间可以分为两种类型:静态和动态.静态绑定和动态绑定有什么区别?
你能举个简单的例子来进一步说明吗?
在最一般的术语中,静态绑定意味着在编译时解析引用.
Animal a = new Animal(); a.Roar(); // The compiler can resolve this method call statically.
动态绑定意味着在运行时解析引用.
public void MakeSomeNoise(object a) { // Things happen... ((Animal) a).Roar(); // You won't know if this works until runtime! }
它取决于何时发生绑定:在编译时(静态)或在运行时(动态).调用简单类方法时使用静态绑定.当您开始处理类层次结构和虚方法时,编译器将开始使用所谓的VTABLE.那时编译器并不确切地知道要调用什么方法,它必须等到运行时才能确定要调用的正确方法(这是通过VTABLE完成的).这称为动态绑定.
有关更多详细信息和参考,请参阅有关虚拟表的 Wikipedia文章.