The two words sound alike but answer different questions, and mixing them up is a classic interview mistake. Overloading gives one class several methods with the same name and different parameters, chosen at compile time. Overriding lets a subclass replace a parent method with the same signature, chosen at runtime from the actual object. Static, private and final methods cannot be overridden, which is behind many output questions.