与えられた型がXの時はX::Func(X Arg)、Yの時はY::Func(Y Arg)を呼ぶことができる…でしょうか。
もし継承が前提なら、両方ともX::Func(Object Arg)、Y::Func(Object Arg)にしなければいけないので、
型チェックのありがたみが薄れる…のだと思います。(自分も詳しく無いです)