2012-10-17 4 views
1

Existe-t-il une relation directe entre la liaison tardive et la substitution, de la même manière pour la liaison précoce et la surcharge? Ils (Binding/Overriding/Overloading) peuvent être considérés comme des moyens d'implémenter le polymorphisme, mais y a-t-il des «relations directes» ex: Late Binding est un concept sub/super à Overriding et vice versa etc?Liaison vs polymorphisme

Répondre

1

Ce sont des concepts orthogonaux (indépendants).

  • Surcharge, Redéfinition: Formes de polymorphisme
  • liaison anticipée/liaison tardive: Dans le premier, la méthode d'appel est connu au moment de la compilation. Dans ce dernier, à l'exécution.

Bien sûr, une mise en oeuvre de passer outre habituellement implique l'utilisation liaison tardive, parce que vous ne savez type réel lors de l'exécution de l'objet. Mais c'est juste un cas spécial.

+0

Donc, peut-il être appelé Overriding est basé sur la liaison tardive et la surcharge sur la liaison précoce - "TOUJOURS"? –

+0

C'est le scénario typique, mais cela peut être différent. Supposons que vous ayez une classe de base 'Pet', et des classes dérivées' Dog' et 'Cat', et une méthode virtuelle' Speak' surchargée dans les deux classes dérivées. Si un compilateur/interpréteur voit les instructions suivantes: 'Pet p = new Dog(); p.Speak(); ', il a assez d'informations pour effectuer une liaison anticipée (il sait que p sera toujours un' Dog'). –

+0

Bon !! Vous avez le sens d'habitude maintenant :) Merci. –