Calls to private methods are inlined. Calls to public methods aren't. Object references and polymorphism are a lot harder for compilers to optimize.
Polymorphism overhead can usually be detected with profiling.