{"id":4849,"date":"2023-11-16T20:57:42","date_gmt":"2023-11-16T20:57:42","guid":{"rendered":"https:\/\/reviewnprep.com\/blog\/?p=4849"},"modified":"2025-08-14T00:12:48","modified_gmt":"2025-08-14T00:12:48","slug":"understanding-object-oriented-programming-oops-concepts-with-examples","status":"publish","type":"post","link":"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/","title":{"rendered":"Understanding Object-Oriented Programming (OOPs) Concepts With Examples"},"content":{"rendered":"\n<p>In the realm of software development, Object-Oriented Programming (OOPs) stands out as a powerful paradigm that facilitates efficient code organization and fosters code reuse. At its core, OOP revolves around the concept of treating real-world entities as objects rather than functions. allowing developers to model complex systems more intuitively.<\/p>\n\n\n\n<p>OOPs allows developers to build flexible and reusable code to design complex applications.<\/p>\n\n\n\n<p>This blog post will explain the key concepts and benefits of object oriented programming.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_66_1 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69ddd19f7bbc8\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69ddd19f7bbc8\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#What_is_Object_Oriented_Programming\" title=\"What is Object Oriented Programming?\">What is Object Oriented Programming?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Objects_in_OOPs_Instances_of_Real-World_Entities\" title=\"Objects in OOPs: Instances of Real-World Entities\">Objects in OOPs: Instances of Real-World Entities<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Class_Definition_Building_Blocks_of_OOP\" title=\"Class Definition: Building Blocks of OOP\">Class Definition: Building Blocks of OOP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Inheritance_Parent_and_Child_Classes\" title=\"Inheritance: Parent and Child Classes\">Inheritance: Parent and Child Classes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Abstraction_Abstract_Classes_and_Methods\" title=\"Abstraction: Abstract Classes and Methods\">Abstraction: Abstract Classes and Methods<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Encapsulation_Protecting_Implementation_Details\" title=\"Encapsulation: Protecting Implementation Details\">Encapsulation: Protecting Implementation Details<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#1_Public_Methods\" title=\"1. Public Methods\">1. Public Methods<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#2_Private_Methods\" title=\"2. Private Methods\">2. Private Methods<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Polymorphism_Method_Overloading_and_Method_Overriding\" title=\"Polymorphism: Method Overloading and Method Overriding\">Polymorphism: Method Overloading and Method Overriding<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Benefits_of_OOPs\" title=\"Benefits of OOPs\">Benefits of OOPs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Putting_Everything_Together\" title=\"Putting Everything Together\">Putting Everything Together<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/reviewnprep.com\/blog\/understanding-object-oriented-programming-oops-concepts-with-examples\/#Conclusion\" title=\"Conclusion\">Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_Object_Oriented_Programming\"><\/span>What is Object Oriented Programming?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Object oriented programming (OOPs) is a programming paradigm where programs are designed around data or objects rather than functions and logic. <\/p>\n\n\n\n<p>OOP can be seen as an evolution or extension of procedural programming. Many early programming languages, such as C, followed a procedural paradigm. With the advent of languages like C++ and Java, OOP gained popularity for its ability to model complex systems more intuitively and promote code reuse through inheritance and encapsulation.<\/p>\n\n\n\n<p>The basic concepts of OOPs are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Objects<\/li>\n\n\n\n<li>Classes<\/li>\n\n\n\n<li>Inheritance<\/li>\n\n\n\n<li>Abstraction<\/li>\n\n\n\n<li>Encapsulation<\/li>\n\n\n\n<li>Polymorphism<\/li>\n<\/ul>\n\n\n\n<p>OOPs empowers software developers to craft systematically structured and reusable code blueprints, commonly referred to as classes, that can be utilized to build instances of objects.<\/p>\n\n\n\n<p>Some popular programming languages that use the concepts of OOPs include <a href=\"https:\/\/www.java.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Java<\/a>, C++, <a href=\"https:\/\/python.org\/\">Python<\/a>, and JavaScript.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Objects_in_OOPs_Instances_of_Real-World_Entities\"><\/span>Objects in OOPs: Instances of Real-World Entities<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The main building blocks of OOPs are objects. An object is an instance of a class that contains data and methods to manipulate that data.<\/p>\n\n\n\n<p>For example:&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class Person:\n\n  def __init__(self, name, age):\n    self.name = name\n    self.age = age\n  \n  def greet(self):\n    print(&quot;Hello, my name is &quot; + self.name)\n\nperson1 = Person(&quot;John&quot;, 36)\nperson1.greet()\n\n# Output: Hello, my name is John\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Person<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, name, age):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.age <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> age<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">greet<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Hello, my name is &quot;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">person1 <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Person(<\/span><span style=\"color: #96D0FF\">&quot;John&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">36<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">person1.greet()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Output: Hello, my name is John<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Here, <code>person1<\/code> is an object of the <code>Person<\/code> class. It contains the data <code>name<\/code> and <code>age<\/code>, and methods like <code>greet()<\/code> to interact with the object.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Class_Definition_Building_Blocks_of_OOP\"><\/span>Class Definition: Building Blocks of OOP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A class is like a blueprint for creating objects. It defines the attributes and behaviors of an object. Objects are created from classes through instantiation.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class Vehicle:\n\n  def __init__(self, make, color):\n    self.make = make\n    self.color = color\n\n  def drive(self):\n     print(&quot;Driving&quot;, self.make)\n\ncar = Vehicle(&quot;Toyota&quot;, &quot;grey&quot;)\ncar.drive()\n\n# Output: Driving Toyota\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Vehicle<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, make, color):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.make <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> make<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.color <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> color<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">drive<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Driving&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.make)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">car <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Vehicle(<\/span><span style=\"color: #96D0FF\">&quot;Toyota&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;grey&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">car.drive()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Output: Driving Toyota<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Here <code>Vehicle<\/code> is the class, and <code>car<\/code> is the object instantiated from that class.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Inheritance_Parent_and_Child_Classes\"><\/span>Inheritance: Parent and Child Classes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Inheritance allows new child classes to be derived from existing parent classes. The child class inherits the attributes and behaviors from the parent.<\/p>\n\n\n\n<p>For example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class Animal:\n\n  def eat(self):\n    print(&quot;Eating...&quot;)\n\n\nclass Dog(Animal):\n\n  def bark(self):\n    print(&quot;Woof woof!&quot;)\n\ndog = Dog()\ndog.eat() # Inherited method\ndog.bark() # Own method\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Animal<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">eat<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Eating...&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Dog<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">Animal<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">bark<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Woof woof!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">dog <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Dog()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">dog.eat() <\/span><span style=\"color: #768390\"># Inherited method<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">dog.bark() <\/span><span style=\"color: #768390\"># Own method<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Here, <code>Dog<\/code> inherits from <code>Animal<\/code> and can access the <code>eat()<\/code> method. It also defines its own <code>bark()<\/code> method.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Abstraction_Abstract_Classes_and_Methods\"><\/span>Abstraction: Abstract Classes and Methods<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Abstraction refers to exposing only the required attributes and hiding the unnecessary implementation details from the user.<\/p>\n\n\n\n<p>For example, a phone&#8217;s dial() method abstracts away the underlying network protocol required to make a call. The user just needs to call dial().<\/p>\n\n\n\n<p>Another example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"from abc import ABC, abstractmethod\n\nclass Shape(ABC):\n    @abstractmethod\n    def area(self):\n        pass\n\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> abc <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">ABC<\/span><span style=\"color: #ADBAC7\">, abstractmethod<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Shape<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">ABC<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">@abstractmethod<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">area<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">pass<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Abstract classes cannot be instantiated and often serve as a blueprint for other classes. Abstract methods, like <code>area<\/code> above, must be implemented by any child class.<\/p>\n\n\n\n<p>Abstraction helps reduce complexity and allows objects to share a uniform interface for usage. Abstract classes and interfaces help achieve abstraction.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/reviewnprep.com\/ide\" target=\"_blank\" rel=\"noreferrer noopener\">Did you know you can try out hands on coding exercises on ReviewNPrep CodeHub.<\/a><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Encapsulation_Protecting_Implementation_Details\"><\/span><strong>Encapsulation:<\/strong> <strong>Protecting Implementation Details<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Encapsulation refers to binding the data and functions together as a single unit called class. It prevents external code from accidentally modifying internal state data of an object.<\/p>\n\n\n\n<p>For example, making fields private or protected in a class prevents external code from modifying them directly. Setter\/getter methods should be used to access private fields.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class BankAccount:\n\n  def __init__(self, balance):\n    self.__balance = balance\n\n  def get_balance(self):\n    return self.__balance\n\naccount = BankAccount(1000)\nprint(account.__balance) # Error\nprint(account.get_balance()) # 1000\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">BankAccount<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, balance):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.__balance <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> balance<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">get_balance<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.__balance<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">account <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> BankAccount(<\/span><span style=\"color: #6CB6FF\">1000<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(account.__balance) <\/span><span style=\"color: #768390\"># Error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(account.get_balance()) <\/span><span style=\"color: #768390\"># 1000<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Here, <code>__balance<\/code> is private, so it can&#8217;t be directly accessed. The <code>get_balance()<\/code> method is used to access it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Public_Methods\"><\/span>1. Public Methods<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Public methods are accessible from outside the class and can be invoked by other classes or modules. They serve as the interface through which external code can interact with the object. Public methods are designed to provide meaningful functionalities and may involve operations on the object&#8217;s attributes.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class BankAccount:\n    def __init__(self, balance):\n        self.balance = balance\n\n    def deposit(self, amount):\n        &quot;&quot;&quot;Public method to deposit money into the account.&quot;&quot;&quot;\n        self.balance += amount\n        print(f&quot;Deposit successful. New balance: {self.balance}&quot;)\n\n    def withdraw(self, amount):\n        &quot;&quot;&quot;Public method to withdraw money from the account.&quot;&quot;&quot;\n        if amount <= self.balance:\n            self.balance -= amount\n            print(f&quot;Withdrawal successful. New balance: {self.balance}&quot;)\n        else:\n            print(&quot;Insufficient funds.&quot;)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">BankAccount<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, balance):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> balance<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">deposit<\/span><span style=\"color: #ADBAC7\">(self, amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;Public method to deposit money into the account.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">+=<\/span><span style=\"color: #ADBAC7\"> amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;Deposit successful. New balance: <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">withdraw<\/span><span style=\"color: #ADBAC7\">(self, amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;Public method to withdraw money from the account.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> amount <\/span><span style=\"color: #F47067\">&lt;=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">-=<\/span><span style=\"color: #ADBAC7\"> amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;Withdrawal successful. New balance: <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Insufficient funds.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In the example above, <code>deposit<\/code> and <code>withdraw<\/code> are public methods that allow external code to interact with the <code>BankAccount<\/code> object.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Private_Methods\"><\/span>2. Private Methods<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Private methods, on the other hand, are intended for internal use within the class and are not accessible from outside. They are prefixed with a double underscore (<code>__<\/code>) to indicate their private nature. Private methods are often used for utility functions or to perform operations that should not be directly exposed to external code.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class BankAccount:\n    def __init__(self, balance):\n        self.balance = balance\n\n    def __validate_amount(self, amount):\n        &quot;&quot;&quot;Private method to validate the amount.&quot;&quot;&quot;\n        return amount &gt; 0\n\n    def deposit(self, amount):\n        &quot;&quot;&quot;Public method to deposit money into the account.&quot;&quot;&quot;\n        if self.__validate_amount(amount):\n            self.balance += amount\n            print(f&quot;Deposit successful. New balance: {self.balance}&quot;)\n        else:\n            print(&quot;Invalid deposit amount.&quot;)\n\n    def withdraw(self, amount):\n        &quot;&quot;&quot;Public method to withdraw money from the account.&quot;&quot;&quot;\n        if self.__validate_amount(amount) and amount &lt;= self.balance:\n            self.balance -= amount\n            print(f&quot;Withdrawal successful. New balance: {self.balance}&quot;)\n        else:\n            print(&quot;Invalid withdrawal amount or insufficient funds.&quot;)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">BankAccount<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, balance):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> balance<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">__validate_amount<\/span><span style=\"color: #ADBAC7\">(self, amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;Private method to validate the amount.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> amount <\/span><span style=\"color: #F47067\">&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">deposit<\/span><span style=\"color: #ADBAC7\">(self, amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;Public method to deposit money into the account.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.__validate_amount(amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">+=<\/span><span style=\"color: #ADBAC7\"> amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;Deposit successful. New balance: <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Invalid deposit amount.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">withdraw<\/span><span style=\"color: #ADBAC7\">(self, amount):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;Public method to withdraw money from the account.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.__validate_amount(amount) <\/span><span style=\"color: #F47067\">and<\/span><span style=\"color: #ADBAC7\"> amount <\/span><span style=\"color: #F47067\">&lt;=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance <\/span><span style=\"color: #F47067\">-=<\/span><span style=\"color: #ADBAC7\"> amount<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;Withdrawal successful. New balance: <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.balance<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Invalid withdrawal amount or insufficient funds.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this modified example, <code>__validate_amount<\/code> is a private method used to validate the deposit and withdrawal amounts. It ensures that the amount is positive before performing the transaction.<\/p>\n\n\n\n<p>By using public and private methods strategically, encapsulation helps in maintaining a clear distinction between the external interface of a class and its internal implementation details, contributing to code robustness and security.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Polymorphism_Method_Overloading_and_Method_Overriding\"><\/span><strong>Polymorphism: Method Overloading and Method Overriding<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Polymorphism allows objects to take on multiple forms. For example, the same function name can be used to perform different operations for different object types.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class Dog:\n\n  def speak(self):\n    print(&quot;Woof woof!&quot;)\n\n\nclass Cat:\n\n  def speak(self):\n    print(&quot;Meow&quot;)\n\ndef animal_speak(animal):\n  animal.speak()\n\ndog = Dog()\ncat = Cat()\n\nanimal_speak(dog) # Woof woof!\nanimal_speak(cat) # Meow\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Dog<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">speak<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Woof woof!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Cat<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">speak<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Meow&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">animal_speak<\/span><span style=\"color: #ADBAC7\">(animal):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">  animal.speak()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">dog <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Dog()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">cat <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Cat()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">animal_speak(dog) <\/span><span style=\"color: #768390\"># Woof woof!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">animal_speak(cat) <\/span><span style=\"color: #768390\"># Meow<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The same <code>speak()<\/code> method behaves differently depending on the object type. This allows for common interfaces and flexible code.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Compile-time Polymorphism (Static Polymorphism):<\/strong> This is achieved through method overloading, where multiple methods in the same class have the same name but different parameters.<\/li>\n\n\n\n<li><strong>Runtime Polymorphism (Dynamic Polymorphism):<\/strong> This is achieved through method overriding, where a method in a base class is redefined in a derived class.<\/li>\n<\/ol>\n\n\n\n<p>For example:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"#Compile-time or Static Polymorphism\nclass Calculator:\n    def add(self, a, b):\n        return a + b\n\n    def add(self, a, b, c):\n        return a + b + c\n        \n#Runtime Polymorphism (Dynamic Polymorphism)\nclass Animal:\n    def make_sound(self):\n        pass\n\nclass Dog(Animal):\n    def make_sound(self):\n        print(&quot;Woof!&quot;)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #768390\">#Compile-time or Static Polymorphism<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Calculator<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">add<\/span><span style=\"color: #ADBAC7\">(self, a, b):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> a <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> b<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">add<\/span><span style=\"color: #ADBAC7\">(self, a, b, c):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> a <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> b <\/span><span style=\"color: #F47067\">+<\/span><span style=\"color: #ADBAC7\"> c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">#Runtime Polymorphism (Dynamic Polymorphism)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Animal<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_sound<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">pass<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Dog<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">Animal<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_sound<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Woof!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Benefits_of_OOPs\"><\/span>Benefits of OOPs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modularity<\/strong>&nbsp;&#8211; Objects encapsulate functionality into independent and interchangeable modules. This allows for easier troubleshooting and updates. <\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Readability<\/strong> &#8211; OOP principles promotes code readability by encapsulating related functionalities within classes, making code maintenance simple. <\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class Car:\n    def __init__(self, brand, model):\n        self.brand = brand\n        self.model = model\n\n    def display_info(self):\n        print(f&quot;{self.brand} {self.model}&quot;)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Car<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, brand, model):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.brand <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> brand<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.model <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> model<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">display_info<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.brand<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\"> <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.model<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reusability<\/strong>&nbsp;&#8211; Code can be reused through inheritance, reducing duplication. <\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"class DatabaseConnection:\n    def __init__(self, connection_string):\n        self.connection_string = connection_string\n\n    def connect(self):\n        pass\n\nclass UserDatabaseConnection(DatabaseConnection):\n    def get_user(self, user_id):\n        pass\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">DatabaseConnection<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, connection_string):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.connection_string <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> connection_string<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">connect<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">pass<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">UserDatabaseConnection<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">DatabaseConnection<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">get_user<\/span><span style=\"color: #ADBAC7\">(self, user_id):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">pass<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Flexibility<\/strong>&nbsp;&#8211; New objects can be created from existing classes through inheritance.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data abstraction<\/strong>&nbsp;&#8211; Individual Objects expose high-level interfaces hiding low-level implementation details.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Putting_Everything_Together\"><\/span>Putting Everything Together<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# File: animal.py\n\nfrom abc import ABC, abstractmethod\n\nclass Animal(ABC):\n    def __init__(self, name, sound):\n        self.name = name\n        self.sound = sound\n\n    @abstractmethod\n    def make_sound(self):\n        pass\n\n\n# File: mammal.py\n\nfrom animal import Animal\n\nclass Mammal(Animal):\n    def give_birth(self):\n        print(f&quot;{self.name} is giving birth!&quot;)\n\n    def make_sound(self):\n        print(f&quot;{self.name} says {self.sound}&quot;)\n\n\n# File: bird.py\n\nfrom animal import Animal\n\nclass Bird(Animal):\n    def fly(self):\n        print(f&quot;{self.name} is flying!&quot;)\n\n    def make_sound(self):\n        print(f&quot;{self.name} sings: {self.sound}&quot;)\n\n\n# File: zoo.py\n\nfrom mammal import Mammal\nfrom bird import Bird\n\nclass Zoo:\n    def __init__(self):\n        self.animals = []\n\n    def add_animal(self, animal):\n        if isinstance(animal, Animal):\n            self.animals.append(animal)\n        else:\n            print(&quot;Invalid animal!&quot;)\n\n    def make_all_sounds(self):\n        for animal in self.animals:\n            animal.make_sound()\n\n\n# File: main.py\n\nfrom zoo import Zoo\nfrom mammal import Mammal\nfrom bird import Bird\n\n# Creating instances of different animal classes\nlion = Mammal(&quot;Lion&quot;, &quot;Roar&quot;)\neagle = Bird(&quot;Eagle&quot;, &quot;Caw&quot;)\n\n# Creating a zoo and adding animals\nzoo = Zoo()\nzoo.add_animal(lion)\nzoo.add_animal(eagle)\n\n# Making all animals in the zoo produce their sounds\nzoo.make_all_sounds()\n\n# Demonstrating method overriding\nlion.give_birth()\n\n# Demonstrating encapsulation\n# Uncommenting the line below will result in an error\n# print(lion.sound)\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #768390\"># File: animal.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> abc <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">ABC<\/span><span style=\"color: #ADBAC7\">, abstractmethod<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Animal<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">ABC<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self, name, sound):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.sound <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> sound<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">@abstractmethod<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_sound<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">pass<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># File: mammal.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> animal <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Animal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Mammal<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">Animal<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">give_birth<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\"> is giving birth!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_sound<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\"> says <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.sound<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># File: bird.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> animal <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Animal<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Bird<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">Animal<\/span><span style=\"color: #ADBAC7\">):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">fly<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\"> is flying!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_sound<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">f<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.name<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\"> sings: <\/span><span style=\"color: #F47067\">{<\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.sound<\/span><span style=\"color: #F47067\">}<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># File: zoo.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> mammal <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Mammal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> bird <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Bird<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Zoo<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.animals <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> []<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">add_animal<\/span><span style=\"color: #ADBAC7\">(self, animal):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">isinstance<\/span><span style=\"color: #ADBAC7\">(animal, Animal):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.animals.append(animal)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">else<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #6CB6FF\">print<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Invalid animal!&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">make_all_sounds<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">for<\/span><span style=\"color: #ADBAC7\"> animal <\/span><span style=\"color: #F47067\">in<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">.animals:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            animal.make_sound()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># File: main.py<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> zoo <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Zoo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> mammal <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Mammal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">from<\/span><span style=\"color: #ADBAC7\"> bird <\/span><span style=\"color: #F47067\">import<\/span><span style=\"color: #ADBAC7\"> Bird<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Creating instances of different animal classes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">lion <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Mammal(<\/span><span style=\"color: #96D0FF\">&quot;Lion&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;Roar&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">eagle <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Bird(<\/span><span style=\"color: #96D0FF\">&quot;Eagle&quot;<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #96D0FF\">&quot;Caw&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Creating a zoo and adding animals<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">zoo <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Zoo()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">zoo.add_animal(lion)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">zoo.add_animal(eagle)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Making all animals in the zoo produce their sounds<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">zoo.make_all_sounds()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Demonstrating method overriding<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">lion.give_birth()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Demonstrating encapsulation<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Uncommenting the line below will result in an error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># print(lion.sound)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In this example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The <code>Animal<\/code> class serves as an abstract base class with an abstract method <code>make_sound<\/code>.<\/li>\n\n\n\n<li>The <code>Mammal<\/code> and <code>Bird<\/code> classes inherit from the <code>Animal<\/code> class, showcasing the concept of inheritance.<\/li>\n\n\n\n<li>The <code>Zoo<\/code> class demonstrates the use of a collection of objects and encapsulates the logic for adding animals and making them produce sounds.<\/li>\n\n\n\n<li>The <code>main.py<\/code> file ties everything together by creating instances of different animal classes, adding them to the zoo, and invoking methods to showcase polymorphism and encapsulation.<\/li>\n<\/ul>\n\n\n\n<p>This zoo application exemplifies the power of OOP in modeling real-world scenarios. Complex programs are broken into multiple smaller units, promoting code reusability, and providing a clear and organized structure for complex systems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Object-Oriented Programming introduces a structured approach to software development, allowing developers to model real-world scenarios more effectively. By employing concepts like inheritance, abstraction, and encapsulation, OOP enhances code organization, readability, and reusability. <\/p>\n\n\n\n<p>While foundational OOP concepts are often illustrated with simple examples like cars or animals, their practical application is most evident in complex software architectures. This is particularly true for many modern <a href=\"https:\/\/blackthorn-vision.com\/blog\/top-10-angular-development-companies\/\" target=\"_blank\" rel=\"noopener\">angular development companies<\/a>, where a deep understanding of OOP is critical for building scalable and maintainable applications. Angular, being a component-based framework, leverages OOP principles extensively. <\/p>\n\n\n\n<p>For instance, developers use classes to define components, services, and directives, employing inheritance to reuse code and polymorphism to handle different data types consistently. Mastering these concepts allows development teams to write clean, modular, and reusable code, which is essential for managing the complexity of large-scale web applications and ensuring a seamless development process.<\/p>\n\n\n\n<p>Understanding these fundamental principles is crucial for building robust, scalable, and maintainable software systems. Incorporating OOP concepts into your development toolkit empowers you to tackle complex problems with a systematic and intuitive approach.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Further Reading:<\/p>\n\n\n\n<p><a href=\"https:\/\/reviewnprep.com\/blog\/full-stack-developer-vs-software-engineer-unraveling-the-distinctions\/\" target=\"_blank\" rel=\"noreferrer noopener\">Discover the key differences between a Full-Stack Developer and a Software Engineer in this blog!<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/reviewnprep.com\/blog\/a-guide-to-software-developer-career-progression\/\" target=\"_blank\" rel=\"noreferrer noopener\">Discover the steps you need to take to progress in your software development career with this comprehensive guide.<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Object-oriented programming (OOP) is a powerful programming paradigm that allows you to organize code into reusable objects. Dive into OOP with this comprehensive guide!<\/p>\n","protected":false},"author":1,"featured_media":4852,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[253],"tags":[],"class_list":["post-4849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/posts\/4849"}],"collection":[{"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/comments?post=4849"}],"version-history":[{"count":5,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/posts\/4849\/revisions"}],"predecessor-version":[{"id":6854,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/posts\/4849\/revisions\/6854"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/media\/4852"}],"wp:attachment":[{"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/media?parent=4849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/categories?post=4849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reviewnprep.com\/blog\/wp-json\/wp\/v2\/tags?post=4849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}