https://sudarshan-s.medium.com/object-oriented-programming-oop-everything-you-need-to-know-4d7530e31741