{"id":8948,"date":"2025-03-03T17:02:41","date_gmt":"2025-03-03T17:02:41","guid":{"rendered":"http:\/\/localhost:8080\/csharp-test\/docs\/csharp\/oops-interface\/introduction-to-interfaces\/"},"modified":"2025-03-26T03:48:09","modified_gmt":"2025-03-26T03:48:09","slug":"interfaces-csharp","status":"publish","type":"docs","link":"https:\/\/www.completecsharptutorial.com\/docs\/csharp\/oops-interface\/interfaces-csharp\/","title":{"rendered":"Interfaces in C#"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"8948\" class=\"elementor elementor-8948\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c6e950 e-flex e-con-boxed e-con e-parent\" data-id=\"0c6e950\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-45482f8 elementor-widget elementor-widget-heading\" data-id=\"45482f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Interface in C# \u2013 The Secret to Flexible Code!<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9ea6bba e-flex e-con-boxed e-con e-parent\" data-id=\"9ea6bba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4272cd3 elementor-widget elementor-widget-text-editor\" data-id=\"4272cd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"59\" data-end=\"216\">Hey there, coder! \ud83d\udc4b Have you ever wondered how to <strong data-start=\"110\" data-end=\"142\">make your code more flexible<\/strong> and <strong data-start=\"147\" data-end=\"163\">future-proof<\/strong>? That\u2019s where <strong data-start=\"178\" data-end=\"197\">Interface in C#<\/strong> comes into play!<\/p><p data-start=\"218\" data-end=\"400\">An interface helps you <strong data-start=\"241\" data-end=\"262\">define a contract<\/strong> that multiple classes can follow. Think of it like a <strong data-start=\"316\" data-end=\"332\">set of rules<\/strong> that classes must obey, without worrying about how they do it! \ud83e\udd2f<\/p><p data-start=\"402\" data-end=\"464\">Let&#8217;s dive into <strong data-start=\"418\" data-end=\"437\">Interface in C#<\/strong> and see how it works! \ud83d\udca1<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1e09698 e-flex e-con-boxed e-con e-parent\" data-id=\"1e09698\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce73812 elementor-widget elementor-widget-docly_alerts_box\" data-id=\"ce73812\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_alerts_box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"alert media message_alert alert-info fade show\" role=\"alert\">\r\n                <i ><\/i>\r\n                <div class=\"media-body\">\r\n                                            <h5 class=\"title\"> \ud83d\udcda What You\u2019re Going to Learn in This Lesson<\/h5>\r\n                                        <p class=\"alert\" data-start=\"526\" data-end=\"707\">\u2714\ufe0f What is an interface?<br data-start=\"554\" data-end=\"557\" \/>\u2714\ufe0f How is it different from an abstract class?<br data-start=\"607\" data-end=\"610\" \/>\u2714\ufe0f Why do we use interfaces in OOP?<br data-start=\"649\" data-end=\"652\" \/>\u2714\ufe0f Simple examples to help you understand easily!<\/p>                                    <\/div>\r\n            <\/div>\r\n        \r\n        \r\n        \r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6a0fac4 e-flex e-con-boxed e-con e-parent\" data-id=\"6a0fac4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-41f4396 elementor-widget elementor-widget-text-editor\" data-id=\"41f4396\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"811\" data-end=\"850\"><strong data-start=\"814\" data-end=\"848\">\ud83d\udd0d What is an Interface in C#?<\/strong><\/h3><p data-start=\"852\" data-end=\"974\">An <strong data-start=\"855\" data-end=\"874\">interface in C#<\/strong> is like a <strong data-start=\"885\" data-end=\"898\">blueprint<\/strong> that defines <strong data-start=\"912\" data-end=\"920\">what<\/strong> a class should do, but not <strong data-start=\"948\" data-end=\"955\">how<\/strong> it should do it.<\/p><p class=\"alert\" data-start=\"976\" data-end=\"1197\">\u2705 It only contains <strong>method signatures<\/strong> (no implementation).<br data-start=\"1038\" data-end=\"1041\" \/>\u2705 A class that implements an interface <strong>must define those methods<\/strong>.<br data-start=\"1111\" data-end=\"1114\" \/>\u2705 It helps in achieving <strong>multiple inheritance<\/strong> (which classes in C# can&#8217;t do).<\/p><h4 data-start=\"1199\" data-end=\"1244\">\u00a0<\/h4><h4 data-start=\"1199\" data-end=\"1244\"><strong data-start=\"1203\" data-end=\"1242\">\ud83d\udca1 Example: Interface as a Contract<\/strong><\/h4><p data-start=\"1246\" data-end=\"1313\">Think of an interface like an <strong data-start=\"1276\" data-end=\"1297\">electrical socket<\/strong>. It tells us:<\/p><p class=\"alert\" data-start=\"1315\" data-end=\"1389\"><strong data-start=\"1318\" data-end=\"1339\">\u2705 What type of plug<\/strong> can be used.<br data-start=\"1352\" data-end=\"1355\" \/><strong data-start=\"1358\" data-end=\"1374\">\u2705 What voltage<\/strong> it supports.<\/p><p data-start=\"1391\" data-end=\"1488\">But it doesn\u2019t care <strong data-start=\"1411\" data-end=\"1425\">what brand<\/strong> of appliance you plug in\u2014just that it follows the rules! \ud83c\udfe1\u26a1<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a08a820 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"a08a820\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7a94375 e-flex e-con-boxed e-con e-parent\" data-id=\"7a94375\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a6de62 elementor-widget elementor-widget-text-editor\" data-id=\"1a6de62\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1495\" data-end=\"1548\"><strong data-start=\"1498\" data-end=\"1546\">\ud83d\udca1 How to Define and Use an Interface in C#?<\/strong><\/h3><p data-start=\"1550\" data-end=\"1623\">Here\u2019s a simple example to understand how an <strong data-start=\"1595\" data-end=\"1614\">interface in C#<\/strong> works!<\/p><h4 data-start=\"1625\" data-end=\"1664\">\u00a0<\/h4><h4 data-start=\"1625\" data-end=\"1664\"><strong data-start=\"1629\" data-end=\"1662\">\u2705 Step 1: Define an Interface<\/strong><\/h4>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-179a2de elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"179a2de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tinterface IAnimal  \r\n{\r\n    void MakeSound();  \/\/ Method without implementation\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d1aebb6 elementor-widget elementor-widget-text-editor\" data-id=\"d1aebb6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul class=\"ordered-list steps\"><li data-start=\"1761\" data-end=\"1896\">The <code data-start=\"1768\" data-end=\"1777\">IAnimal<\/code> interface defines a <strong data-start=\"1798\" data-end=\"1810\">contract<\/strong>.<\/li><li data-start=\"1761\" data-end=\"1896\">Any class that implements <code data-start=\"1843\" data-end=\"1852\">IAnimal<\/code> <strong data-start=\"1853\" data-end=\"1868\">must define<\/strong> the <code data-start=\"1873\" data-end=\"1886\">MakeSound()<\/code> method.<\/li><\/ul><h4>\u00a0<\/h4><h4>\u2705 Step 2: Implement the Interface in a Class<\/h4>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-64d234a elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"64d234a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tclass Dog : IAnimal  \r\n{\r\n    public void MakeSound()  \r\n    {\r\n        Console.WriteLine(&quot;Woof! \ud83d\udc36&quot;);  \r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2482e0d elementor-widget elementor-widget-text-editor\" data-id=\"2482e0d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul class=\"ordered-list steps\"><li>The <code data-start=\"2090\" data-end=\"2095\">Dog<\/code> class <strong data-start=\"2102\" data-end=\"2116\">implements<\/strong> the <code data-start=\"2121\" data-end=\"2130\">IAnimal<\/code> interface.<\/li><li>It <strong data-start=\"2150\" data-end=\"2158\">must<\/strong> provide an implementation for <code data-start=\"2189\" data-end=\"2202\">MakeSound()<\/code>.<\/li><\/ul><h4>\u00a0<\/h4><h4>\u2705 Step 3: Use the Interface in a Program<\/h4>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-97dfc23 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"97dfc23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tclass Program  \r\n{\r\n    static void Main()  \r\n    {\r\n        IAnimal myDog = new Dog();  \/\/ Using interface reference\r\n        myDog.MakeSound();  \/\/ Output: Woof! \ud83d\udc36  \r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-376285f elementor-widget elementor-widget-text-editor\" data-id=\"376285f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul class=\"ordered-list steps\"><li>We created an <code data-start=\"2468\" data-end=\"2477\">IAnimal<\/code> reference and assigned a <code data-start=\"2503\" data-end=\"2508\">Dog<\/code> object to it.<\/li><li>This allows <strong data-start=\"2540\" data-end=\"2558\">loose coupling<\/strong>, meaning we can easily swap <code data-start=\"2587\" data-end=\"2592\">Dog<\/code> with another class that implements <code data-start=\"2628\" data-end=\"2637\">IAnimal<\/code>.<\/li><\/ul><p>\u00a0<\/p><h5>Output<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e81b053 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"e81b053\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism-dark\" data-lng-type=\"markup\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-markup\">\r\n\t\t\t\t\tWoof! \ud83d\udc36\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e59c170 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"e59c170\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d1582e8 e-flex e-con-boxed e-con e-parent\" data-id=\"d1582e8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a688a84 elementor-widget elementor-widget-heading\" data-id=\"a688a84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\ud83d\udca1 Different Types of Interfaces in C# (With Examples!)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3c0c80 elementor-widget elementor-widget-text-editor\" data-id=\"a3c0c80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1657\" data-end=\"1752\">Let&#8217;s go through <strong data-start=\"1674\" data-end=\"1702\">four types of interfaces<\/strong> with <strong data-start=\"1708\" data-end=\"1727\">simple examples<\/strong> to make learning easy!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4c0b4dd e-flex e-con-boxed e-con e-parent\" data-id=\"4c0b4dd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d757f47 elementor-widget elementor-widget-text-editor\" data-id=\"d757f47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"1759\" data-end=\"1809\"><strong data-start=\"1762\" data-end=\"1807\">1\ufe0f\u20e3 Basic Interface \u2013 Defining a Contract<\/strong><\/h3><p data-start=\"1811\" data-end=\"1921\">An <strong data-start=\"1814\" data-end=\"1833\">interface in C#<\/strong> is simply a contract. Let&#8217;s create a <strong data-start=\"1871\" data-end=\"1890\">basic interface<\/strong> and implement it in a class.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e3642c elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"2e3642c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tusing System;\r\n\r\ninterface IVehicle  \r\n{\r\n    void Start();  \/\/ Method without implementation\r\n}\r\n\r\nclass Car : IVehicle  \r\n{\r\n    public void Start()  \r\n    {\r\n        Console.WriteLine(&quot;Car is starting... \ud83d\ude97&quot;);  \r\n    }\r\n}\r\n\r\nclass Program  \r\n{\r\n    static void Main()  \r\n    {\r\n        IVehicle myCar = new Car();  \r\n        myCar.Start();  \/\/ Output: Car is starting... \ud83d\ude97  \r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a750070 elementor-widget elementor-widget-text-editor\" data-id=\"a750070\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5>\ud83d\udda5\ufe0f Output:<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-93b28df elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"93b28df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism-dark\" data-lng-type=\"markup\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-markup\">\r\n\t\t\t\t\tCar is starting... \ud83d\ude97\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da8d6f2 elementor-widget elementor-widget-text-editor\" data-id=\"da8d6f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4 data-start=\"773\" data-end=\"798\"><strong data-start=\"777\" data-end=\"796\">\ud83d\udcdd Explanation:<\/strong><\/h4>\n<ul class=\"ordered-list steps\">\n \t<li data-start=\"799\" data-end=\"1038\"><code data-start=\"802\" data-end=\"812\">IVehicle<\/code> defines a contract with a <code data-start=\"839\" data-end=\"848\">Start()<\/code> method.<\/li>\n \t<li data-start=\"799\" data-end=\"1038\"><code data-start=\"862\" data-end=\"867\">Car<\/code> <strong data-start=\"868\" data-end=\"882\">implements<\/strong> <code data-start=\"883\" data-end=\"893\">IVehicle<\/code> and <strong data-start=\"898\" data-end=\"921\">must define Start()<\/strong>.<\/li>\n \t<li data-start=\"799\" data-end=\"1038\">In <code data-start=\"931\" data-end=\"939\">Main()<\/code>, we use an interface reference (<code data-start=\"972\" data-end=\"1001\">IVehicle myCar = new Car();<\/code>), which <strong data-start=\"1010\" data-end=\"1035\">allows loose coupling<\/strong>.<\/li>\n<\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1185af7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"1185af7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be8c7a3 e-flex e-con-boxed e-con e-parent\" data-id=\"be8c7a3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0be5071 elementor-widget elementor-widget-text-editor\" data-id=\"0be5071\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"2557\" data-end=\"2609\"><strong data-start=\"2560\" data-end=\"2607\">2\ufe0f\u20e3 Interface with Multiple Implementations<\/strong><\/h3><p data-start=\"2611\" data-end=\"2719\">A single interface can be implemented by <strong data-start=\"2652\" data-end=\"2672\">multiple classes<\/strong>, each providing its own version of behavior!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3d8d80 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"b3d8d80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tusing System;\r\n\r\ninterface IAnimal  \r\n{\r\n    void MakeSound();\r\n}\r\n\r\nclass Dog : IAnimal  \r\n{\r\n    public void MakeSound()  \r\n    {\r\n        Console.WriteLine(&quot;Woof! \ud83d\udc36&quot;);  \r\n    }\r\n}\r\n\r\nclass Cat : IAnimal  \r\n{\r\n    public void MakeSound()  \r\n    {\r\n        Console.WriteLine(&quot;Meow! \ud83d\udc31&quot;);  \r\n    }\r\n}\r\n\r\nclass Program  \r\n{\r\n    static void Main()  \r\n    {\r\n        IAnimal myDog = new Dog();\r\n        myDog.MakeSound();  \/\/ Output: Woof! \ud83d\udc36\r\n\r\n        IAnimal myCat = new Cat();\r\n        myCat.MakeSound();  \/\/ Output: Meow! \ud83d\udc31\r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-006d757 elementor-widget elementor-widget-text-editor\" data-id=\"006d757\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5>\ud83d\udda5\ufe0f Output:<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2bad3c8 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"2bad3c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism-dark\" data-lng-type=\"markup\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-markup\">\r\n\t\t\t\t\tWoof! \ud83d\udc36\r\nMeow! \ud83d\udc31\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8fa9366 elementor-widget elementor-widget-text-editor\" data-id=\"8fa9366\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"3242\" data-end=\"3267\"><strong data-start=\"3246\" data-end=\"3265\">\ud83d\udcdd Explanation:<\/strong><\/h3>\n<ul class=\"ordered-list steps\">\n \t<li data-start=\"3268\" data-end=\"3531\"><code data-start=\"3271\" data-end=\"3280\">IAnimal<\/code> is an <strong data-start=\"3287\" data-end=\"3300\">interface<\/strong> with a <code data-start=\"3308\" data-end=\"3321\">MakeSound()<\/code> method.<\/li>\n \t<li data-start=\"3268\" data-end=\"3531\"><code data-start=\"3335\" data-end=\"3340\">Dog<\/code> and <code data-start=\"3345\" data-end=\"3350\">Cat<\/code> <strong data-start=\"3351\" data-end=\"3377\">both implement IAnimal<\/strong>, but they define <code data-start=\"3395\" data-end=\"3408\">MakeSound()<\/code> differently.<\/li>\n \t<li data-start=\"3268\" data-end=\"3531\">This is an <strong data-start=\"3438\" data-end=\"3465\">example of polymorphism<\/strong>, where different classes use the same method in different ways.<\/li>\n<\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1402c26 e-flex e-con-boxed e-con e-parent\" data-id=\"1402c26\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5e35fe6 elementor-widget elementor-widget-text-editor\" data-id=\"5e35fe6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"3538\" data-end=\"3636\"><strong data-start=\"3541\" data-end=\"3634\">3\ufe0f\u20e3 Multiple Interface Implementation (C# Supports Multiple Inheritance with Interfaces!)<\/strong><\/h3><p data-start=\"3638\" data-end=\"3708\">Unlike classes, a class in C# <strong data-start=\"3668\" data-end=\"3705\">can implement multiple interfaces<\/strong>!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44b84a1 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"44b84a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tusing System;\r\n\r\ninterface IFlyable  \r\n{\r\n    void Fly();\r\n}\r\n\r\ninterface IWalkable  \r\n{\r\n    void Walk();\r\n}\r\n\r\nclass Bird : IFlyable, IWalkable  \r\n{\r\n    public void Fly()  \r\n    {\r\n        Console.WriteLine(&quot;Flying high! \ud83e\udd85&quot;);  \r\n    }\r\n\r\n    public void Walk()  \r\n    {\r\n        Console.WriteLine(&quot;Walking on the ground! \ud83d\udc26&quot;);  \r\n    }\r\n}\r\n\r\nclass Program  \r\n{\r\n    static void Main()  \r\n    {\r\n        Bird myBird = new Bird();\r\n        myBird.Fly();   \/\/ Output: Flying high! \ud83e\udd85\r\n        myBird.Walk();  \/\/ Output: Walking on the ground! \ud83d\udc26\r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3f0bf9 elementor-widget elementor-widget-text-editor\" data-id=\"d3f0bf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5>\ud83d\udda5\ufe0f Output:<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-59287b9 elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"59287b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism-dark\" data-lng-type=\"markup\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-markup\">\r\n\t\t\t\t\tFlying high! \ud83e\udd85\r\nWalking on the ground! \ud83d\udc26\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-958e103 elementor-widget elementor-widget-text-editor\" data-id=\"958e103\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4 data-start=\"2635\" data-end=\"2660\"><strong data-start=\"2639\" data-end=\"2658\">\ud83d\udcdd Explanation:<\/strong><\/h4><ul class=\"ordered-list steps\"><li data-start=\"2661\" data-end=\"2903\"><code data-start=\"2664\" data-end=\"2670\">Bird<\/code> <strong data-start=\"2671\" data-end=\"2700\">implements two interfaces<\/strong>: <code data-start=\"2702\" data-end=\"2712\">IFlyable<\/code> and <code data-start=\"2717\" data-end=\"2728\">IWalkable<\/code>.<\/li><li data-start=\"2661\" data-end=\"2903\">It must define both <code data-start=\"2755\" data-end=\"2762\">Fly()<\/code> and <code data-start=\"2767\" data-end=\"2775\">Walk()<\/code> methods.<\/li><li data-start=\"2661\" data-end=\"2903\">This allows a class to inherit behaviors from multiple sources, which <strong data-start=\"2860\" data-end=\"2900\">isn\u2019t possible with abstract classes<\/strong>.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ecb4594 e-flex e-con-boxed e-con e-parent\" data-id=\"ecb4594\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20b5fab elementor-widget elementor-widget-text-editor\" data-id=\"20b5fab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"4522\" data-end=\"4596\"><strong data-start=\"4525\" data-end=\"4594\">4\ufe0f\u20e3 Explicit Interface Implementation (Avoiding Naming Conflicts)<\/strong><\/h3><p data-start=\"4598\" data-end=\"4715\">When a class implements <strong data-start=\"4622\" data-end=\"4671\">multiple interfaces with the same method name<\/strong>, explicit interface implementation helps!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a275d8d elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"a275d8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism\" data-lng-type=\"csharp\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-csharp\">\r\n\t\t\t\t\tusing System;\r\n\r\ninterface IPrinter  \r\n{\r\n    void Print();\r\n}\r\n\r\ninterface IScanner  \r\n{\r\n    void Print();\r\n}\r\n\r\nclass OfficeMachine : IPrinter, IScanner  \r\n{\r\n    void IPrinter.Print()  \r\n    {\r\n        Console.WriteLine(&quot;Printing document... \ud83d\udda8\ufe0f&quot;);  \r\n    }\r\n\r\n    void IScanner.Print()  \r\n    {\r\n        Console.WriteLine(&quot;Scanning document... \ud83d\udcc4&quot;);  \r\n    }\r\n}\r\n\r\nclass Program  \r\n{\r\n    static void Main()  \r\n    {\r\n        OfficeMachine machine = new OfficeMachine();\r\n\r\n        ((IPrinter)machine).Print();  \/\/ Output: Printing document... \ud83d\udda8\ufe0f\r\n        ((IScanner)machine).Print();  \/\/ Output: Scanning document... \ud83d\udcc4\r\n    }\r\n}\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed7cacd elementor-widget elementor-widget-text-editor\" data-id=\"ed7cacd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5>\ud83d\udda5\ufe0f Output:<\/h5>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba933be elementor-widget elementor-widget-docly_code_syntax_highlighter\" data-id=\"ba933be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"docly_code_syntax_highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t                    <div class=\"docly-source-code prism-dark\" data-lng-type=\"markup\">\r\n\t\t\t<pre>\r\n\t\t\t\t<code class=\"language-markup\">\r\n\t\t\t\t\tPrinting document... \ud83d\udda8\ufe0f\r\nScanning document... \ud83d\udcc4\r\n\t\t\t\t<\/code>\r\n\t\t\t<\/pre>\r\n            <\/div>\r\n                \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-baa19c2 elementor-widget elementor-widget-text-editor\" data-id=\"baa19c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4 data-start=\"3684\" data-end=\"3709\"><strong data-start=\"3688\" data-end=\"3707\">\ud83d\udcdd Explanation:<\/strong><\/h4><ul class=\"ordered-list steps\"><li data-start=\"3710\" data-end=\"3936\"><code data-start=\"3713\" data-end=\"3723\">IPrinter<\/code> and <code data-start=\"3728\" data-end=\"3738\">IScanner<\/code> both have a <code data-start=\"3751\" data-end=\"3760\">Print()<\/code> method.<\/li><li data-start=\"3710\" data-end=\"3936\"><code data-start=\"3774\" data-end=\"3789\">OfficeMachine<\/code> <strong data-start=\"3790\" data-end=\"3831\">implements both interfaces explicitly<\/strong> to avoid conflicts.<\/li><li data-start=\"3710\" data-end=\"3936\">To call the correct method, we <strong data-start=\"3888\" data-end=\"3933\">cast the object to the required interface<\/strong>.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d4fb238 e-flex e-con-boxed e-con e-parent\" data-id=\"d4fb238\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3514879 elementor-widget elementor-widget-text-editor\" data-id=\"3514879\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 data-start=\"5602\" data-end=\"5653\"><strong data-start=\"5605\" data-end=\"5651\">\ud83c\udfaf Conclusions<\/strong><\/h3><p class=\"alert\" data-start=\"5655\" data-end=\"5964\">\u2705 Interfaces <strong data-start=\"5669\" data-end=\"5701\">help define a clear contract<\/strong> for your classes.<br data-start=\"5719\" data-end=\"5722\" \/>\u2705 They allow <strong data-start=\"5736\" data-end=\"5794\">flexibility, scalability, and better code organization<\/strong>.<br data-start=\"5795\" data-end=\"5798\" \/>\u2705 You can <strong data-start=\"5809\" data-end=\"5842\">implement multiple interfaces<\/strong> in a class, unlike abstract classes.<br data-start=\"5879\" data-end=\"5882\" \/>\u2705 They <strong data-start=\"5890\" data-end=\"5916\">promote loose coupling<\/strong>, making code <strong data-start=\"5930\" data-end=\"5961\">easier to maintain and test<\/strong>.<\/p><p data-start=\"5966\" data-end=\"6081\">By now, you should have a <strong data-start=\"5992\" data-end=\"6034\">solid understanding of Interface in C#<\/strong> and how to use it in real-world projects! \ud83c\udf89<\/p><p data-start=\"5966\" data-end=\"6081\">\u00a0<\/p><h3 data-start=\"5966\" data-end=\"6081\">\ud83d\ude80 Next What?<\/h3><p data-start=\"77\" data-end=\"261\">Awesome! \ud83c\udfaf You\u2019ve learned <strong data-start=\"104\" data-end=\"203\">what an interface in C# is, why it&#8217;s useful, and how to implement different types of interfaces<\/strong> with examples. Now, let\u2019s take it to the next level! \ud83d\ude80<\/p><p data-start=\"263\" data-end=\"557\">In the <strong data-start=\"270\" data-end=\"285\">next lesson<\/strong>, you\u2019ll dive into:<\/p><p class=\"alert\" data-start=\"263\" data-end=\"557\">\u2714\ufe0f <strong data-start=\"310\" data-end=\"353\">Best practices for designing interfaces<\/strong><br data-start=\"353\" data-end=\"356\" \/>\u2714\ufe0f <strong data-start=\"359\" data-end=\"387\">Common mistakes to avoid<\/strong> when using interfaces<br data-start=\"409\" data-end=\"412\" \/>\u2714\ufe0f <strong data-start=\"415\" data-end=\"459\">How to write clean and maintainable code<\/strong> with interfaces<br data-start=\"475\" data-end=\"478\" \/>\u2714\ufe0f <strong data-start=\"481\" data-end=\"511\">Performance considerations<\/strong> when using interfaces in large applications<\/p><p data-start=\"559\" data-end=\"683\">By mastering these best practices, you&#8217;ll be able to <strong data-start=\"612\" data-end=\"666\">write flexible, scalable, and professional C# code<\/strong> like a pro! \ud83d\udca1<\/p><p data-start=\"685\" data-end=\"783\" data-is-last-node=\"\" data-is-only-node=\"\">Ready? Let\u2019s keep going and <strong data-start=\"713\" data-end=\"778\">learn the Best Practices and Guidelines for Interfaces in C#!<\/strong> \ud83c\udf89\ud83d\udcbb<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Learn Interface in C# with simple examples. Understand its types, multiple implementations, and best practices for writing flexible code! <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":8028,"menu_order":149,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"class_list":["post-8948","docs","type-docs","status-publish","hentry","no-post-thumbnail"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/docs\/8948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/comments?post=8948"}],"version-history":[{"count":5,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/docs\/8948\/revisions"}],"predecessor-version":[{"id":8958,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/docs\/8948\/revisions\/8958"}],"up":[{"embeddable":true,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/docs\/8028"}],"wp:attachment":[{"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/media?parent=8948"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.completecsharptutorial.com\/wp-json\/wp\/v2\/doc_tag?post=8948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}