----> This is the parent class with the foo method which takes an argument
---> This is a child class of A, so all the methods and member variables of class A are available to class Baba. So foo(int) method is available here and foo() is the overloaded method in class Baba
Simply, overloading is method with the same name (but different args, no. of args)
overriding is the method with the exact same signature(same arg, same no. of args)