Method overiding vs method overloading

Method overloading

Method overriding

Example of covariant return type

Class Burgerfactory{
 public Burger createBurger{
 reurn new Burger();} //this returns an object of class burger
  }

 Class HealthyBurgerFactory extends Burgerfactory{
   public HealthyBurger createBurger{
    return new HealthyBurger();}

Class HeathyBurgerFactory returns an object of class HealthyBurger, where HealthyBurger is an child of class Burger .So when we overide the createBurger method in child class HealthyBurgerFactory it can either have same return type i.e Burger or a child return type of Burger that is HealthyBurger.