Method overloading is the ability of a class to have two or more methods with the same name but different parameters. Method overriding is the ability of a subclass to provide a different implementation of a method that is already defined in its superclass.