Extension functions are statically dispatched based on the compile‑time type, not the runtime type. They don’t actually override member functions. A common pitfall is calling an extension on a variable typed as a base class and expecting the derived extension to run.
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "extension-functions:-how-are-they-dispatched-and"
function explain() {
// Start from the core idea:
// Extension functions are statically dispatched based on the compile‑time type, not the runt
}